Advertisement
andreibalu

lab grafuri

Apr 5th, 2021
697
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.25 KB | None | 0 0
  1. nu citeste primu arc;
  2.  
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. typedef struct TipNod {
  8.   //Ambele sunt doar niste atribute ale nodului
  9.   //Nu influenteaza implementarea functiilor
  10.   int cheie;
  11.   int info;
  12. } Nod;
  13.  
  14. typedef struct TipArc {
  15.     int idx_nod_1, idx_nod_2;
  16. } Arc;
  17.  
  18. typedef struct Graf {
  19.   int nr_noduri;
  20.   Nod Noduri[15];
  21.   int Arce[15][15];//matricea de adiacenta
  22. } Graf;
  23.  
  24.  
  25.  
  26.  
  27. void Initializare(Graf *g){
  28.   g->nr_noduri = 0;
  29. }
  30.  
  31. void InsertNod(Graf *g, Nod n){
  32.   //se adauga nodul n in graf(primul nod e pe pozitia 0)
  33.   int index_nod = g->nr_noduri;
  34.   g->Noduri[index_nod] = n;
  35.   g->nr_noduri++;
  36.   //se initializeaza matricea de adiacenta pentru noul nod
  37.   int i;
  38.   for(i = 1; i <= g->nr_noduri; i++){
  39.     g->Arce[index_nod][i] = g->Arce[i][index_nod] = 0;
  40.   }
  41. }
  42.  
  43. void InsertArc(Graf *g, Arc a){
  44.   g->Arce[a.idx_nod_1][a.idx_nod_2] = g->Arce[a.idx_nod_2][a.idx_nod_1] = 1;
  45. }
  46.  
  47. void SuprimaNod(Graf *g, int index_nod)
  48. {
  49.   //nodul indicat este inlocuit cu ultimul nod
  50.   int index_ultim = g->nr_noduri - 1;
  51.   g->Noduri[index_nod] = g->Noduri[index_ultim];
  52.   int i;
  53.   for(i = 1; i <= g->nr_noduri; i++){
  54.     g->Arce[i][index_nod] = g->Arce[i][index_ultim];
  55.     g->Arce[index_nod][i] = g->Arce[index_ultim][i];
  56.   }
  57.     g->nr_noduri--;
  58. }
  59.  
  60. void SuprimaArc(Graf *g, Arc a){
  61.   g->Arce[a.idx_nod_1][a.idx_nod_2] = g->Arce[a.idx_nod_2][a.idx_nod_1] = 0;
  62. }
  63.  
  64. void Afiseaza_Arce(Graf *g){
  65.   int i,j;
  66.   for(i = 1; i <= g->nr_noduri; i++){
  67.     for(j = 1; j <= g->nr_noduri; j++)
  68.       printf("%d ", g->Arce[i][j]);
  69.     printf("\n");
  70.   }
  71. }
  72. Graf *g;
  73.  
  74. int main()
  75. {
  76.     g=(Graf*)malloc(sizeof(Graf));
  77.  
  78.  
  79.     Initializare(g);
  80.     int N;  //nr de noduri
  81.     int M;  //nr de arce
  82.     scanf("%d",&N);
  83.     scanf("%d",&M);
  84.  /*   for(int i=0;i<N;i++){
  85.         scanf("%d",&c);
  86.         Nod d;
  87.         d.cheie=i;
  88.         InsertNod(g,d);
  89.     }
  90. */
  91.     int a,b;
  92.     Arc ar;
  93.  
  94.  
  95.     for(int i=1;i<=M;i++){
  96.         scanf("%d",&a);
  97.         Nod c;
  98.             c.cheie=a;
  99.                 InsertNod(g,c);
  100.         scanf("%d",&b);
  101.         Nod d;
  102.             d.cheie=b;
  103.                 InsertNod(g,d);
  104.         ar.idx_nod_1=a;
  105.         ar.idx_nod_2=b;
  106.         InsertArc(g,ar);
  107.     }
  108.  
  109.     Afiseaza_Arce(g);
  110.  
  111.  
  112.  
  113.     return 0;
  114. }
  115.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement