Cod sursa(job #278129)

Utilizator AnaAnaBozeanu Ana AnaAna Data 12 martie 2009 09:27:30
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
   1. #include<fstream.h>  
   2. #define max 100004  
   3. #define maxm max*(max-1)/2  
   4.   
   5.   
   6. ifstream fin("dfs.in");  
   7. ofstream fout("dfs.out");  
   8.   
   9. int n,m,v[max],nc;  
  10. struct nod {int info;  
  11.          nod *urm;  
  12.          };  
  13. nod *l[max];  
  14. void adauga(int x,int y);  
  15.   
  16. void citire()  
  17. {int i,x,y;  
  18.  fin>>n>>m;  
  19.  for(i=1;i<=m;i++)  
  20.  {fin>>x>>y;  
  21.   adauga(x,y);  
  22.   adauga(y,x);  
  23.   }  
  24.  }  
  25.   
  26.   void adauga(int x,int y)  
  27.   {nod *d;  
  28.    d=new nod;  
  29.    d->info=y;  
  30.    d->urm=l[x];  
  31.    l[x]=d;  
  32.   }  
  33.   
  34.   
  35. void dfs(int i)  
  36. {v[i]=1;  
  37.  nod *d;  
  38.  d=l[i];  
  39.  while(d)  
  40.  {if(v[d->info]==0) dfs(d->info);  
  41.   d=d->urm;  
  42.   }  
  43.   
  44.  }  
  45.   
  46.   
  47. int main()  
  48. {int i; nc=0;  
  49.  citire();  
  50.   
  51.  for(i=1;i<=n;i++)  
  52.  if(v[i]==0) {dfs(i);  
  53.           nc++;  
  54.           }  
  55.   
  56.  fout<<nc;  
  57.   
  58.  fin.close();  
  59.  fout.close();  
  60.   
  61.  return 0;  
  62.  }