Mai intai trebuie sa te autentifici.
Cod sursa(job #530855)
Utilizator | Data | 8 februarie 2011 16:06:08 | |
---|---|---|---|
Problema | Parcurgere DFS - componente conexe | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.94 kb |
#include<fstream.h>
#include<stdio.h>
ifstream f("dfs.in");
ofstream g("dfs.out");
typedef struct nod{
int nr;
nod *ante;
};
nod *l[1000],*p;
long n,m,i,j,mm,max;
int v[1000];
int init(){
for(int i=1;i<=n;i++) v[i]=0;
return 0;
}
int df(int k){
nod *q;
max++;
q=l[k];
v[k]=1;
while(q){
if(!v[q->nr])
df(q->nr);
q=q->ante;
}
return 0;
}
int main(){
f>>n>>m;
while(f>>i>>j){
p=new nod;
p->nr=i;
p->ante=l[j];
l[j]=p;
}
ifstream f2("dfs.in");
f2>>n>>m;
while(f2>>i>>j){
p=new nod;
p->nr=j;
p->ante=l[i];
l[i]=p;
}
/*
for(i=1;i<=n;i++){
p=l[i];
printf("%d ",i);
while(p){
printf("%d ",p->nr);
p=p->ante;
}
printf("\n");
}*/
mm=0;
for(i=1;i<=n;i++){
init();
v[i]=1;
max=0;
df(i);
if(max>mm)
mm=max;
}
g<<mm<<"\n";
f2.close();
f.close();
g.close();
return 0;
}