1 条题解
-
0
模板 拓扑排序
#include<iostream> using namespace std; const int N=1e4+7; int n; struct edge{ int to,nxt; }t[N]; int deg[N],ans[N],tot,en; int h[N]; void add(int u,int v){ t[++tot].to=v; t[tot].nxt=h[u]; h[u]=tot; } int main(){ cin>>n; for(int i=1; i<=n; i++){ int u,v; cin>>u>>v; add(u,v); deg[i]++; } for(int i=1; i<=n; i++) if(!deg[i])ans[++en]=i; int pos=1; while(pos<=en){ int u=ans[pos++]; for(int i=h[u];i; i=t[u].nxt){ if(!--deg[i]){ ans[++en]=t[i].to; } } } for(int i=1; i<=n; i++) cout<<ans[i]<<" "; return 0; }
- 1
信息
- ID
- 4660
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 9
- 已通过
- 8
- 上传者