Guest User

Untitled

a guest
May 20th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.31 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include "graf.h"
  4.  
  5. FILE *f;
  6.  
  7. #define MAX 10
  8. int N, M, k;
  9. Graf *a[MAX] ;
  10.  
  11. int adauga_arc(Graf *D[MAX], int n1, int n2)
  12. {  
  13.     Graf *p;
  14.  
  15.     if(!(p=(Graf*)malloc(sizeof(Graf))))
  16.         return 0;
  17.     p->info=n2;
  18.     p->next=D[n1];
  19.     D[n1]=p;
  20.     return 1;
  21. }
  22.  
  23. void creeaza(Graf *D[MAX], char * nume_fisier)
  24. {
  25.     printf("Introduce-ti numele fisierului: ");
  26.     scanf("%s",nume_fisier);
  27.  
  28.     if ((f = fopen(nume_fisier, "r")) == NULL)
  29.     {
  30.         printf("Eroare \n");
  31.         exit(-1);
  32.     }
  33.    
  34.     //creaza graf
  35.    
  36.     fscanf(f,"%d %d", & N, &M);
  37.     int n1, n2;
  38.     for(k=0; k<M; k++)
  39.     {
  40.         fscanf(f,"%d%d", &n1, &n2);
  41.         if( ! ( adauga_arc(D,n1,n2) && adauga_arc(D, n2, n1)) )
  42.         {
  43.             printf("eroare");
  44.             return ;
  45.         }
  46.     }
  47. }
  48.  
  49. int arbore(Graf * G[MAX])
  50. {
  51.     Graf *p;
  52.     int i,nr=0;
  53.     int viz[MAX]={0};
  54.    
  55.     if(M==N-1)
  56.     {
  57.         for(i=1;i<=N;i++)
  58.         {    for(p=G[i];p!=NULL;p=p->next)
  59.              
  60.                 if(viz[p->info]==0)
  61.                 { viz[p->info]=1;
  62.                     nr++;}
  63.         }  
  64.            
  65.         if(nr!=N) {printf("Graful nu este arbore deoarece nu este conex");return 0;}
  66.         else printf("Graful este arbore");
  67.     }
  68.    
  69.     else printf("Graful nu este arbore deoarece are cicluri");
  70.     return 0;
  71. }
Add Comment
Please, Sign In to add comment