86分求助
查看原帖
86分求助
1101744
xingshuyan000楼主2024/8/29 15:52

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;
}
2024/8/29 15:52
加载中...