深度优先搜索求出拓扑序列
#include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> #include<ctime> #include<string> #include<vector> using namespace std; #define vi vector<int> vi a[100]; int n,m; int ans[10000]; int id; bool is[11111]; void dfs(int r) { is[r]=1; for(int i=0;i<a[r].size();++i) { int v=a[r][i]; if(!is[v]) dfs(v); } ans[++id]=r; } int main() { id=0; cin>>n>>m; for(int i=1;i<=m;++i) { int u,v; scanf("%d%d",&u,&v); a[u].push_back(v); } dfs(1); for(int i=1;i<=n;++i) cout<<ans[i]<<" "; puts(""); return 0; }