题目链接
解题思路:模板题,简单搜索,根据数据建图然后分别dfs和bfs输出即可
AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
#include<stack>
#include<queue>
using namespace std;
typedef long long ll;
int v,e;
int vis[15],g[15][15];
queue<int> q;
void initG()
{
int x,y;
scanf("%d %d",&v,&e);
for(int i=0;i<e;i++)
{
scanf("%d %d",&x,&y);
g[x][y]=g[y][x]=1;
}
}
void dfs(int i)
{
vis[i]=1;
printf(" %d",i);
for(int j=0;j<v;j++)
{
if(!vis[j]&&g[i][j])
{
dfs(j);
}
}
}
void bfs(int i)
{
q.push(i);
vis[i]=1;
while(!q.empty())
{
for(int j=0;j<v;j++)
{
if(!vis[j]&&g[q.front()][j])
{
vis[j]=1;
q.push(j);
}
}
printf(" %d",q.front());
q.pop();
}
}
int main()
{
initG();
memset(vis,0,sizeof(vis));
for(int i=0;i<v;i++)
{
if(!vis[i])
{
printf("{");
dfs(i);
printf(" }\n");
}
}
memset(vis,0,sizeof(vis));
for(int i=0;i<v;i++)
{
if(!vis[i])
{
printf("{");
bfs(i);
printf(" }\n");
}
}
return 0;
}