86分求助

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

xingshuyan000 @ 2024-08-29 15:52:58

86 分,第6个测试点 WA,错误信息是 wrong output format Unexpected end of file - int32 expected,不知道怎么回事

#include<bits/stdc++.h>
using namespace std;
const int N=110;
int n;
int h[N],e[N],ne[N],idx;
int q[N],d[N];
void add(int a,int b)
{
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;//数组模拟邻接表存图 
}
bool topsort()
{
    int hh=0,tt=-1;//头指针和尾指针 
    for(int i=1;i<=n;i++)
    {
        if(d[i]==0)q[++tt]=i;//如果入度为0,把元素加到队头 
    }
    while(hh<=tt)//队列非空 
    {
        int t=q[hh++];//取出队头元素 
        for(int i=h[t];i!=-1;i=ne[i])
        {
            int j=e[i];//找到出边 
            d[j]--;//该边的入度-- 
            if(d[j]==0)q[++tt]=j;//如果该边的入度为0,入队 
        }
    }
    if(tt==n-1)return true;//所有的点都加入到队列里面了,这是有向无环图 
    else return false;//否则是有向有环图,没有拓扑序列 
}
int main()
{
    cin>>n;
    memset(h,-1,sizeof(h));
    for(int i=1;i<=n;i++)
    {
        int x;
        while(cin>>x && x!=0)
        {
            add(i,x);
            d[x]++;
        }
    }
    if(topsort())//是有向无环图 
    {
        for(int i=0;i<n;i++)cout<<q[i]<<" ";//输出拓扑序列,拓扑序列在队列的次序中 
    }
    return 0;
}

by cancan1030 @ 2024-08-29 15:56:31

输出不够长


by cancan1030 @ 2024-08-29 15:56:45

@xingshuyan000


by xingshuyan000 @ 2024-08-29 16:18:42

@cancan1030 好的


by _mei_tou_nao_ @ 2024-10-15 18:54:49

@cancan1030 浅浅的问一下,到底哪错了?正在学习拓扑排序,看题解似乎没有作用,发现了这个,想学习一下,所以问一下哪错了...


by asdfghjkltf @ 2024-11-20 16:33:48

@cancan1030什么意思


|