Pagini recente » Cod sursa (job #1731517) | Cod sursa (job #75749) | Cod sursa (job #1377322) | Cod sursa (job #1354546) | Cod sursa (job #1509499)
#include <iostream>
#include <cstdio>
using namespace std;
FILE *f=fopen("dfs.in", "r");
FILE *g=fopen("dfs.out","w");
int n,m,x,y, viz[100001];
struct nod
{
int info;
nod *urm;
};
nod *a[100005];
void ADD(nod *&prim, int x)
{
nod *q=new nod;
q->info=x;
q->urm=prim;
prim=q;
}
void citire()
{ int c1, c2;
fscanf(f,"%d %d",&n,&m);
for(int i=1;i<=m;i++)
{
fscanf(f,"%d %d", &c1, &c2);
ADD(a[c1],c2);
ADD(a[c2],c1);
}
}
void DFS(int x)
{
viz[x]=1;
for(nod *p=a[x];p!=0;p=p->urm)
if(viz[p->info]==0) DFS(p->info);
}
int parcurgere()
{ int nrcomp=0;
for(int i=1;i<=n;i++)
if(viz[i]==0)
{
nrcomp++;
DFS(i);
}
return nrcomp;
}
int main()
{
citire();
int s=parcurgere();
fprintf(g,"%d",s);
return 0;
}