Pagini recente » Cod sursa (job #1988377) | Borderou de evaluare (job #2022600) | Cod sursa (job #1198143) | Borderou de evaluare (job #2124309) | Cod sursa (job #401535)
Cod sursa(job #401535)
#include <iostream.h>
#include <fstream.h>
ifstream f("dfs.in");
ofstream g("dfs.out");
int n,m,i,j,viz[100001],nr=1,p,c[100001];
struct nod{
int inf;
nod *adr;
};
nod *P[100001], *q;
void creare(){
f>>n>>m;
for(int k=1;k<=m;k++){
f>>i>>j;
q=new nod;
q->inf=j;
q->adr=P[i];
P[i]=q;
}
}
void bf(int x){
int p,u;
p=u=1;
c[p]=x;
viz[x]=1;
while(p<=u){
q = P[c[p]];
while (q!=NULL) {
i = q->inf;
if(!viz[i]){
c[++u]=i;
viz[i]=1;
}
q = q->adr;
}
p++;
}
}
int main(){
creare();
for(i=1;i<=n;i++)
if(!viz[i]){
bf(i);
nr++;
}
g<<nr-1;
f.close();
g.close();
return 0;
}