30分(输入?)有问题,大佬求调
查看原帖
30分(输入?)有问题,大佬求调
755363
IT_theory楼主2024/7/31 08:46
#include<bits/stdc++.h>
using namespace std;
int ecnt,go[100005],adj[200010],nxt[200010],deg[100005],n,m;
void add(int u,int v){
    go[++ecnt]=v;
    nxt[ecnt]=adj[u];
    adj[u] = ecnt;
    deg[v]++;
}
void tuopu(){
    queue<int>que;
    for(int i = 1;i<=n;i++)
        if(deg[i]==0){
            printf("%d ",i);
            que.push(i);
            break;
        }
    while(!que.empty()){
        int u = que.front();
        que.pop();
        for(int i = adj[u];i;i=nxt[i]){
            deg[go[i]]--;
            if(deg[go[i]]==0){
                printf("%d ",go[i]);
                que.push(go[i]);
            }
        }
    }
    return;
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i = 1;i<=n;i++){
        int tar;
        while(scanf("%d",&tar)!=EOF&&tar!=0){
            add(i,tar);
            
        }
    }
    tuopu();
    return 0;
}
2024/7/31 08:46
加载中...