mycode:
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
void dfs(vector<vector<int>> a,int i,vector<int> &test,vector<int> &dfs_sub)
{
test[i] = 1;
for (int j = 0; j < a[i].size(); j++)
{
if (a[i][j] == 1&& !test[j])
{
dfs_sub.push_back(j);
dfs(a, j,test,dfs_sub);
}
}
return;
}
int main(int argc, char *argv[])
{
int n;
int e;
cin >> n;
cin >> e;
vector<vector<int> > res(n,vector<int>(n,0));
vector<vector<int> > dfs_num;
vector<int> dfs_sub;
int count = 0;
while (count < e)
{
int a, b;
cin >> a;
cin >> b;
res[a][b] = 1;
res[b][a] = 1;
count++;
}
//dfs
vector<int> test(n, 0);
for (int i = 0; i < n; i++)
{
if (!test[i])
{
dfs_sub.push_back(i);
dfs(res, i,test,dfs_sub);
dfs_num.push_back(dfs_sub);
dfs_sub.clear();
}
}
for (int i = 0; i < dfs_num.size(); i++)
{
cout << "{ ";
for (int j = 0; j < dfs_num[i].size(); j++)
{
cout << dfs_num[i][j] << " ";
}
cout << "}"<<endl;
}
//bfs
vector<int> test_bfs(n,0);
queue<int> bfs_que;
vector<vector<int> > bfs_num;
vector<int> bfs_sub;
for (int i = 0; i < n; i++)
{
if (!test_bfs[i])
{
bfs_sub.push_back(i);
test_bfs[i] = 1;
bfs_que.push(i);
while (!bfs_que.empty())
{
int m = bfs_que.front();
bfs_que.pop();
for (int j = 0; j < res[m].size(); j++)
{
if (res[m][j] == 1 && !test_bfs[j])
{
test_bfs[j] = 1;
bfs_sub.push_back(j);
bfs_que.push(j);
}
}
}
bfs_num.push_back(bfs_sub);
bfs_sub.clear();
}
}
for (int i = 0; i < bfs_num.size(); i++)
{
cout << "{ ";
for (int j = 0; j < bfs_num[i].size(); j++)
{
cout << bfs_num[i][j] << " ";
}
cout << "}";
cout << endl;
}
return 0;
}