// 数 连通图块的问题
/*
1. 遍历
2. 建立一个数组 记录遍历过的点
3. 结束条件:所有点均完成遍历
数据结构:
邻接表—STL:Vector
数组:visited[]——存储某点是否来过
*/
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
const int N = 1e5 + 100;
vector<int> vec[N];
bool visited[N];
void dfs(int u) {
visited[u] = true;
for(int i = 0; i < vec[u].size(); i++) {
int v = vec[u][i];
if(!visited[v])
dfs(v);
}
}
int main() {
int n, m, u, v;
cin >> n >> m;
//输入边
while(m--) {
cin >> u >> v;
vec[u].push_back(v);
vec[v].push_back(u);
}
int ans = 0;
memset(visited, false, sizeof(visited));
for(int i = 1; i <= n; i++) {
if(!visited[i]) {
dfs(i);
ans++;
}
}
cout << ans <<endl;
return 0;
}
12-03
06-09
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交