Pagini recente » Cod sursa (job #2464388) | Cod sursa (job #1678017) | Cod sursa (job #3161978) | Cod sursa (job #3222381) | Cod sursa (job #705999)
Cod sursa(job #705999)
#include<stdio.h>
#include <vector>
#include <queue>
using namespace std;
long nrg,i,n,m,nr,x,y,mina,mark[100001];
vector<long> a[100001];
queue<long> q;
int main()
{
freopen("dfs.in","r",stdin);
freopen("dfs.out","w",stdout);
scanf("%ld %ld",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%ld %ld",&x,&y);
a[y].push_back(x);
a[x].push_back(y);
}
mina=1;
while(mina<=n)
{
for(i=mina;i<=n;i++)
if(mark[i]==0)
{
mina=i;
break;
}
if(mark[mina]==1) break;
nrg++;
mark[mina]=1;
q.push(mina);
while(!q.empty())
{
x=q.front();
nr=a[x].size();
for(i=0;i<nr;i++)
if(mark[a[x][i]]==0)
{
mark[a[x][i]]=1;
q.push(a[x][i]);
}
q.pop();
}
}
printf("%ld\n",nrg);
return 0;
}