/*
第一行为两个整数n、e,表示图顶点数和边数。
以下e行每行两个整数,表示一条边的起点、终点,保证不重复、不失败。
1≤n≤20,0≤e≤190
*/
第一行为两个整数n、e,表示图顶点数和边数。
以下e行每行两个整数,表示一条边的起点、终点,保证不重复、不失败。
1≤n≤20,0≤e≤190
*/
#include<iostream>
using namespace std;
int Graph[20][20];
int vis[20];
int u,v;
//如果当前的节点和其他的未访问过的节点相邻,则访问这个节点,并将其设置为访问过
void BFS(int current,int N)
{
vis[current] = 1;
cout<<current<<" ";;
for(int i = 0;i<N;i++)
{
if(Graph[current][i] == 1 && vis[i] == 0)
{
BFS(i,N);
}
}
}
int main()
{
int N,M;
//freopen("sample_input.txt","r",stdin);
cin>>N>>M;
//输入图
for(int i = 0;i <M;i++)
{
cin>>u>>v;
Graph[u][v] = 1;
Graph[v][u] = 1;
}
//输出图
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
cout<<Graph[i][j]<<" ";
}
cout<<endl;
}
//BFS遍历各个节点
//1.防止一些节点和其他节点不连接,所以要遍历所有的节点
for(int i = 0;i < N; i++)
{
if(vis[i]==0)
{
BFS(i,N);
}
}
cout<<endl;
return 0;
}