Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //implementare graf cu matrice de adiacenta aferenta muchii
- # include <stdio.h>
- #define max 200
- FILE * f;
- FILE * fout;
- typedef struct GraphRep {
- int nV; //numãrul de noduri
- int nE; //numãrul de muchii
- int values_matrix[max][max]; // matricea de adiacenta
- } GraphRep;
- typedef struct GraphRep Graph;
- /* nodurile sunt reprezentate prin numere intregi pozitive de la 0 la n-1 */
- typedef int Node;
- /* muchiile sunt definite prin nodurile capat*/
- typedef struct { Node v; Node w; } Edge;
- /*functia de constructie a unui graf*/
- Graph newGraph()
- {
- GraphRep g;
- g.nV = 0; g.nE = 0;
- return g;
- }
- /*functia care verifica daca un nod apartine grafului*/
- static int isNode(Graph g, Node v)
- {
- return ( v >= 0 && v < g.nV);
- }
- /*functia de adaugare a unui nod în graf*/
- Graph addNode(Graph g, Node v)
- {
- g.nV++;
- return(g);
- }
- /*functia de adaugare a unei muchii*/
- Graph addEdge(Graph g, Node v, Node w)
- {
- if((isNode(g,v) && isNode(g,w)))
- {
- g.values_matrix[v][w]=1;
- g.values_matrix[w][v]=1;
- g.nE++;
- }
- return g;
- }
- /*funcþia de afisare a matricei de adiacenta asociata grafului*/
- void show(Graph g)
- {
- int i, j;
- fprintf(fout,"Numarul de noduri este %d\n",g.nV);
- fprintf(fout,"Numarul de muchii este %d\n",g.nE);
- fprintf(fout, "Matricea de adiacenta este: \n");
- printf("Matricea de adiacenta este: \n");
- for(i=0;i<g.nV;i++)
- {
- for(j=0;j<g.nV;j++)
- {
- fprintf(fout,"%d ",g.values_matrix[i][j]);
- printf("%d ",g.values_matrix[i][j]);
- }
- fprintf(fout,"\n");
- printf("\n");
- }
- }
- /*functia principalã*/
- int main()
- {
- int n,m,i,j,x,y;
- f = fopen ("graf.in", "r");
- Graph my_graph;
- my_graph=newGraph();
- fscanf(f,"%d%d\n",&n,&m);
- printf("Numarul de noduri este %d\n", n);
- printf("Numarul de muchii este %d\n", m);
- for (i=0; i<n; i++)
- {
- my_graph=addNode(my_graph,i);
- }
- for(i=1;i<=m;i++)
- {
- fscanf(f,"%d%d\n",&x,&y);
- printf("Se adauga muchia de la nodul %d la nodul %d\n", x,y);
- my_graph=addEdge(my_graph,x,y);
- }
- fclose(f);
- fout = fopen ("graf.out", "w");
- show(my_graph);
- fclose(fout);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement