58 WA 3个点
查看原帖
58 WA 3个点
617065
Ovine楼主2022/11/15 20:43
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int n;
int cnt;
queue<int> q;

struct node{
	 int u;
	 int v;
	 int nxt;
}a[100*100*100];
int du[106];
int fis[106];
void add(int u,int v)
{
	cnt++;
	a[cnt].u=u;
	a[cnt].v=v;
	a[cnt].nxt=fis[u];
	fis[u]=cnt;
}

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int x;
		while(cin>>x)
		{
			if(x==0)
			{
				//cout<<"out"<<endl;
				break;
			}
			//cout<<endl;
			//cout<<x<<' ';
			add(i,x);
			du[x]++;
		}
	}
	int s;
	for(int i=1;i<=n;i++)
	{
		if(du[i]==0)
		{
			s=i;
			break;
		}
	}
	q.push(s);
	while(q.size())
	{
		int x=q.front();
		q.pop();
		cout<<x<<' ';
		for(int e=fis[x];e;e=a[e].nxt)
		{
			du[a[e].v]--;
			if(du[a[e].v]==0)
			{
				q.push(a[e].v);
			}
		}
	}
	return 0;
}
2022/11/15 20:43
加载中...