求救
  • 板块学术版
  • 楼主Bugbread
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/11/26 16:23
  • 上次更新2024/11/26 19:29:46
查看原帖
求救
422273
Bugbread楼主2024/11/26 16:23

B3644,为什么我是86pts?WA on #6

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int n,id,cnt;
int du[101],h[101],e[101],nxt[101],ans[101];
queue<int>q;
void add(int u,int v)
{
	e[id]=v;
	nxt[id]=h[u];
	h[u]=id++;
}
int main()
{
	cin>>n;
	memset(h,-1,sizeof(h));
	for(int i=1;i<=n;i++)
	{
		while(1)
		{
			int x;
			cin>>x;
			if(!x)
			{
				break;
			}
			add(x,i);
			++du[i];
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(!du[i])
		{
			ans[++cnt]=i;
			q.push(i);
		}
	}
	while(q.size())
	{
		int u=q.front();
		q.pop();
		for(int i=h[u];~i;i=nxt[i])
		{
			int v=e[i];
			--du[v];
			if(du[v]==0)
			{
				ans[++cnt]=v;
				q.push(v);
			}
		}
	}
	for(int i=cnt;i>=1;i--)
	{
		cout<<ans[i]<<' ';
	}
	return 0;
}
2024/11/26 16:23
加载中...