图的遍历
2024-10-19 19:23:56
发布于:上海
#include<bits/stdc++.h>
using namespace std;
int n,m,flag;
int a[1005][1005];
int vis[1005];
void dfs(int cur)
{
vis[cur] = 1;
cout<<cur<<" ";
for(int i=1;i<=n;i++)
{
if(!vis[i] && a[cur][i])
{
dfs(i);
}
}
}
void bfs(int cur)
{
queue<int>q;
q.push(cur);
vis[cur]=1;
cout<<cur<<" ";
while(!q.empty())
{
int head=q.front();
for(int i=1;i<=n;i++)
{
if(!vis[i] and a[head][i])
{
vis[i]=1;
cout<<i<<" ";
q.push(i);
}
}
q.pop();
}
}
int main()
{
cin>>n>>m;
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
a[x][y]=1;
}
dfs(1);
memset(vis,0,sizeof vis);
cout<<endl;
bfs(1);
}
全部评论 2
对比看出dfs更省事(
2024-10-19 来自 广东
0确实
2024-10-26 来自 上海
0
注:有向图
2024-10-19 来自 上海
0
有帮助,赞一个