Pagini recente » Cod sursa (job #2146872) | Cod sursa (job #2105628) | Cod sursa (job #2213937) | Cod sursa (job #1663480) | Cod sursa (job #1521838)
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 100002
using namespace std;
vector<int>a[nmax];
int n,m,viz[nmax],v=1,nr=0;
void citire()
{
int i,x,y;
cin>>n>>m;
for(i=1;i<=n;i++)
a[i].push_back(0);
for(i=1; i<=m; i++)
{
cin>>x>>y;
//a[x][0]++;
a[x].push_back(y);
//a[y][0]++;
a[y].push_back(x);
}
}
void dfs(int x)
{
int i;
viz[x]=v;
for(i=1; i<=a[x].size()-1; i++)
if(!viz[a[x][i]])
{
dfs(a[x][i]);
nr++;
}
}
int main()
{
freopen("dfs.in","rt",stdin);
freopen("dfs.out","wt",stdout);
int i;
citire();
while(nr<n)
{
v++;
for(i=1; i<=n; i++)
if(!viz[i])
{
dfs(i);
nr++;
break;
}
}
cout<<v-1<<'\n';
return 0;
}