Skip to content

Instantly share code, notes, and snippets.

@joaogui1
Created April 3, 2016 16:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joaogui1/dca1a9162ca0236777e2da8561bd4507 to your computer and use it in GitHub Desktop.
Save joaogui1/dca1a9162ca0236777e2da8561bd4507 to your computer and use it in GitHub Desktop.
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
int main()
{
int m, n, i, j, a, b, cont = 0, z;
scanf("%d%d", &n, &m);
vector<int> v [n+1];
int imperio[n+1];
queue<int> f;
for(i=0;i<m;i++)
{
scanf("%d %d", &a, &b);
v[a].push_back(b);
v[b].push_back(a);
}
for(i=1;i<=n;i++)
imperio[i] = -1;
for(i=1;i<=n;i++)
{
if(imperio[i] == -1)
{
cont++;
imperio[i] = cont;
f.push(i);
while(!f.empty())
{
z = f.front();
f.pop();
for(j=0;j<v[z].size();j++)
{
if(imperio[v[z][j]] == -1){
imperio[v[z][j]] = imperio[z];
f.push(v[z][j]);
}
}
}
}
}
printf("%d", cont);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment