P1206 犯罪团伙
2017年5月16日
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define maxx 1100
int N, M;
int ans_groups = 0;
bool K[maxx][maxx];
bool Jud[5100];
void Inserts()
{
cin >> N >> M;
memset(K, false, sizeof(K));
memset(Jud, false, sizeof(Jud));
for(int i = 1; i <= M; i++){
int x, y;
cin >> x >> y;
K[x][y] = true;
K[y][x] = true;
}
}
inline void DFS(int s)
{
for(int i = 1; i <= N; i++)
if(K[s][i] == true && Jud[i] == false){
Jud[i] = true;
DFS(i);
}
}
void Find()
{
for(int i = 1; i <= N; i++)
if(Jud[i] == false){
ans_groups++;
Jud[i] = true;
DFS(i);
}
}
int main()
{
ios::sync_with_stdio(false);
Inserts();
Find();
cout << ans_groups << endl;
return 0;
}