Pagini recente » Cod sursa (job #657684) | Cod sursa (job #2064278) | Cod sursa (job #2347722) | Cod sursa (job #1502895) | Cod sursa (job #1017419)
#include <cstdio>
#include <iostream>
#define Nmax 2000
using namespace std;
int a[Nmax][Nmax];
int n,m,i,j,cmp=0,c;
bool viz[Nmax];
void reading(int &n,int m)
{
freopen("dfs.in","r",stdin);
freopen("dfs.out","w",stdout);
scanf("%d %d",&n,&m);
int x,y;
for(i=1;i<=m;++i)
{
scanf("%d %d",&x,&y);
++a[x][0];a[x][a[x][0]]=y;
++a[y][0];a[y][a[y][0]]=x;
}
}
void dfs(int x)
{
viz[x]=1;
for(i=1;i<=a[x][0];++i)
if (!viz[a[x][i]]) dfs(a[x][i]);
}
int main()
{
reading(n,m);
dfs(2);
++cmp;
bool ok;
do
{
ok=false;
for(i=1;i<=n;++i)
if (!viz[i]) {ok=true;c=i;++cmp;break;}
dfs(c);
}
while(ok);
printf("%d",cmp);
return 0;
}