Cod sursa(job #147439)

Utilizator p1ccolinoAlexandru Vlad p1ccolino Data 2 martie 2008 21:45:32
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<fstream.h>
int n,viz[100001],nrc;
long m,st[100001];
struct nod{int x; nod*urm;} *l[100001];
int dfs(int v)
{nrc++;int vf=1; viz[v]=nrc;
 while (vf) { nod*p=l[st[vf]];
 while (p&&viz[p->x]) p=p->urm;
 if(p){vf++; st[vf]=p->x;
 viz[p->x]=nrc;}
 else vf--;}
 }
}
int main()
{int i,j,v1,v2,ok=1;
ifstream f("dfs.in");
f>>n>>m;
for(i=1;i<m+1;i++)
{f>>v1>>v2;
nod *p=new nod;p->x=v1;p->urm=l[v2];
l[v2]=p;
nod *q=new nod;q->x=v2;q->urm=l[v1];
l[v1]=q;
}f.close();
for(i=1;i<n+1;i++)
if(viz[i]==0) dfs(i);
ofstream g("dfs.out");
for(i=1;i<nr+1;i++)
{for(j=1;j<n+1;j++) if(viz[j]==nr) g<<j<<" ";
g<<"\n";}
g.close();
return 0;}