Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. //implementare graf cu matrice de adiacenta aferenta muchii
  2. # include <stdio.h>
  3. #define max 200
  4. FILE * f;
  5. FILE * fout;
  6. typedef struct GraphRep {
  7. int nV; //numãrul de noduri
  8. int nE; //numãrul de muchii
  9. int values_matrix[max][max]; // matricea de adiacenta
  10. } GraphRep;
  11. typedef struct GraphRep Graph;
  12. /* nodurile sunt reprezentate prin numere intregi pozitive de la 0 la n-1 */
  13. typedef int Node;
  14. /* muchiile sunt definite prin nodurile capat*/
  15. typedef struct { Node v; Node w; } Edge;
  16. /*functia de constructie a unui graf*/
  17. Graph newGraph()
  18. {
  19. GraphRep g;
  20. g.nV = 0; g.nE = 0;
  21. return g;
  22. }
  23. /*functia care verifica daca un nod apartine grafului*/
  24. static int isNode(Graph g, Node v)
  25. {
  26. return ( v >= 0 && v < g.nV);
  27. }
  28. /*functia de adaugare a unui nod în graf*/
  29. Graph addNode(Graph g, Node v)
  30. {
  31. g.nV++;
  32. return(g);
  33. }
  34. /*functia de adaugare a unei muchii*/
  35. Graph addEdge(Graph g, Node v, Node w)
  36. {
  37. if((isNode(g,v) && isNode(g,w)))
  38. {
  39. g.values_matrix[v][w]=1;
  40. g.values_matrix[w][v]=1;
  41. g.nE++;
  42. }
  43. return g;
  44. }
  45. /*funcþia de afisare a matricei de adiacenta asociata grafului*/
  46. void show(Graph g)
  47. {
  48. int i, j;
  49. fprintf(fout,"Numarul de noduri este %d\n",g.nV);
  50. fprintf(fout,"Numarul de muchii este %d\n",g.nE);
  51. fprintf(fout, "Matricea de adiacenta este: \n");
  52. printf("Matricea de adiacenta este: \n");
  53. for(i=0;i<g.nV;i++)
  54. {
  55. for(j=0;j<g.nV;j++)
  56. {
  57. fprintf(fout,"%d ",g.values_matrix[i][j]);
  58. printf("%d ",g.values_matrix[i][j]);
  59. }
  60. fprintf(fout,"\n");
  61. printf("\n");
  62. }
  63. }
  64. /*functia principalã*/
  65. int main()
  66. {
  67. int n,m,i,j,x,y;
  68. f = fopen ("graf.in", "r");
  69. Graph my_graph;
  70. my_graph=newGraph();
  71. fscanf(f,"%d%d\n",&n,&m);
  72. printf("Numarul de noduri este %d\n", n);
  73. printf("Numarul de muchii este %d\n", m);
  74. for (i=0; i<n; i++)
  75. {
  76. my_graph=addNode(my_graph,i);
  77. }
  78. for(i=1;i<=m;i++)
  79. {
  80. fscanf(f,"%d%d\n",&x,&y);
  81. printf("Se adauga muchia de la nodul %d la nodul %d\n", x,y);
  82. my_graph=addEdge(my_graph,x,y);
  83. }
  84. fclose(f);
  85. fout = fopen ("graf.out", "w");
  86. show(my_graph);
  87. fclose(fout);
  88. return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement