Pagini recente » Cod sursa (job #1236357) | Cod sursa (job #890038) | Cod sursa (job #1600181) | Diferente pentru problema/ape intre reviziile 11 si 4 | Cod sursa (job #854270)
Cod sursa(job #854270)
#include<cstdio>
#include<algorithm>
//#include<iostream>
using namespace std;
int N, M, use[100001];
struct lista
{
int nod;
lista *urm;
};
lista *G[100001];
void add ( int i, int j )
{
lista *p = new lista;
p->nod = j;
p->urm = G[i];
G[i] = p;
}
void inPut()
{
int i, j;
scanf ( "%d %d", &N, &M );
while ( M-- )
{
scanf ( "%d %d", &i, &j );
add (i, j);
add (j, i);
}
}
void depth(int nd)
{
lista *p;
use[nd] = 1;
for(p=G[nd]; p!=NULL; p=p->urm)
if(!use[p->nod])
depth(p->nod);
}
int main()
{
freopen ( "dfs.in", "r", stdin ) ;
inPut();
int Nr=0;
for(int i=1; i<=N; i++)
if(!use[i])
{
++Nr;
depth(i);
}
freopen ( "dfs.out", "w", stdout );
printf ( "%d\n", Nr );
fclose(stdout);
return 0;
}