#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
int N;
int E;
vector<vector<int>> map;
vector<bool> visited;
void dfs(int x)
{
if (visited[x])
return;
cout << x<<" ";
visited[x] = 1;
for (auto& it : map[x])
{
dfs(it);
}
}
void BFS(int x)
{
deque<int> que;
que.push_back(x);
while (!que.empty())
{
int num = que.front();
que.pop_front();
if (visited[num])
continue;
visited[num] = 1;
cout << num << " ";
for (auto& it : map[num])
{
que.push_back(it);
}
}
}
int main()
{
cin >> N >> E;
visited.resize(N + 1);
map.resize(N + 1);
for (int i = 0; i < E; i++)
{
int a;
int b;
cin >> a >> b;
map[a].push_back(b);
map[b].push_back(a);
}
for (auto& it : map)
sort(it.begin(), it.end());
for (int i = 0; i < N; i++)
{
if (!visited[i])
{
cout << "{ ";
dfs(i);
cout << "}" << endl;
}
}
for (auto it : visited)
it = 0;
for (int i = 0; i < N; i++)
{
if (!visited[i])
{
cout << "{ ";
BFS(i);
cout << "}" << endl;
}
}
}
06-图1 列出连通集 一遍AC
最新推荐文章于 2021-01-21 19:27:42 发布