Pagini recente » Cod sursa (job #2750279) | Cod sursa (job #3170162) | Cod sursa (job #1333801) | Cod sursa (job #56858) | Cod sursa (job #657194)
Cod sursa(job #657194)
#include<stdio.h>
#define N_MAX 100001
struct lista
{
int nod;
lista *next;
} *G[N_MAX];
long n,m,nr; bool vizitat[N_MAX];
void Adauga(long i, long j)
{
lista *q;
q=new lista; q->nod=j;
q->next=G[i]; G[i]=q;
}
void Citire(void)
{
long i,j;
freopen("dfs.in","r",stdin);
scanf("%d %d\n",&n,&m);
for(; m>0; m--)
{
scanf("%d %d\n",i,j);
Adauga(i,j); Adauga(j,i);
}
}
void DFS(long nod)
{
lista *q;
vizitat[nod]=1;
for(q=G[nod]; q!=NULL; q=q->next)
if(!vizitat[q->nod])
DFS(q->nod);
}
void Solve(void)
{
int i;
for(i=1; i<=n; i++)
if(!vizitat[i])
{
nr++;
DFS(i);
}
}
void Afisare(void)
{
freopen("dfs.out","w",stdout);
printf("%d\n",nr);
}
int main()
{
Citire();
Solve();
Afisare();
return 0;
}