无法输出TAT 求助

B3644 【模板】拓扑排序 / 家谱树

已解决 ```cpp #include<bits/stdc++.h> using namespace std; typedef long long ll; int n,tot,cnt; int v[10001],head[10001],nxt[10001],deg[101],a[101],b; void add(int x,int y) { v[++tot]=y;nxt[tot]=head[x];head[x]=tot; deg[y]++; } void toposort() { queue<int> q; for(int i=1;i<=n;i++) { if(deg[i]==0) { //cout<<i<<" "; q.push(i); } } while(q.size()) { int x=q.front();q.pop(); a[++cnt]=x; for(int i=head[x];i;i=nxt[i])//这里应该是nxt[i]要遍历所有边 { deg[v[i]]--; if(deg[v[i]]==0) q.push(v[i]); } } } int main() { cin>>n; for(int i=1;i<=n;i++) { while(cin>>b) { if(b==0) break; add(i,b); } } toposort(); for(int i=1;i<=cnt;i++) { cout<<a[i]<<" "; } return 0; } ```
by boy♂Next♂dooor @ 2024-03-30 20:34:26


|