先上一个板子吧,单向的
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
const int maxn=1e3+10;
int tot,n,m,cnt;
int head[maxn],vis[maxn],ans[maxn];
struct E{
int to,next;
}edge[maxn<<1];
void add(int u,int v){
edge[tot].to=v;
edge[tot].next=head[u];
head[u]=tot++;
}
void dfs(int now){
for(int i=head[now];i!=-1;i=edge[i].next){
if(!vis[i]){
vis[i]=1;
dfs(edge[i].to);
ans[cnt++]=edge[i].to;
}
}
}
int main(){
cin>>n>>m;
memset(head,-1,sizeof(head));
memset(vis,0,sizeof(vis));
memset(ans,0,sizeof(ans));
tot=0;cnt=0;
while(m--){
int u,v;cin>>u>>v;
add(u,v);
}
dfs(1);
cout<<1<<endl;
for(int i=cnt-1;i>=0;i--){
cout<<ans[i]<<endl;
}
}
/*
7 9
1 2
2 3
3 1
1 5
5 4
4 7
7 6
6 4
4 1
*/
来源:CSDN
作者:Anonytt_
链接:https://blog.csdn.net/Rainfoo/article/details/104698399