Pagini recente » Cod sursa (job #92724) | Cod sursa (job #1952366) | Cod sursa (job #2782997) | Cod sursa (job #2881858) | Cod sursa (job #2205229)
#include <stdio.h>
#include <stdbool.h>
#define N 100001
#define M 200001
int n,vf[2*M], urm[2*M], lst[N], nr, conex;
bool viz[N];
void add(int x, int y){
nr++;
vf[nr]=y;
urm[nr]=lst[x];
lst[x]=nr;
}
void dfs(int x){
viz[x]=true;
int p, y;
p=lst[x];
while(p!=0){
y=vf[p];
if(!viz[y]){
dfs(y);
}
p=urm[p];
}
}
int main()
{
FILE *f1, *f2;
int n, m, x, y, i;
f1=fopen("dfs.in","r");
fscanf(f1,"%d%d",&n,&m);
for(i=0;i<m;i++){
fscanf(f1,"%d%d",&x,&y);
add(x,y);
add(y,x);
}
for(i=1;i<=n;i++)
if(!viz[i]){
dfs(i);
conex++;
}
f2=fopen("dfs.out","w");
fprintf(f2,"%d",conex);
return 0;
}