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什么意思