ac#7,其他全re,大佬看我
查看原帖
ac#7,其他全re,大佬看我
1082633
alittlecat11楼主2024/11/20 13:31
#include<bits/stdc++.h>
using namespace std;
int indgree[2000];
int head[2000];
struct edge{
	int to,next;
} edges[50000];
int cnt=0;
int adde(int u,int v)
{
	edges[cnt].to=v;
	edges[cnt].next=head[u];
	head[u]=cnt++;
}
int main ()
{
	memset(indgree,0,sizeof indgree);
	memset(head,-1,sizeof head);
	int n;
	cin>>n;
	queue<int> q;
	for(int i=1;i<=n;i++)
	{
		int t;
		while(1)
		{
			cin>>t;
			if(t==0)break;
			indgree[t]++;
			adde(i,t);
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(indgree[i]==0)
		{
			q.push(i);
		}
	}
	
	while(!q.empty())
	{
		int t=q.front();
		q.pop();
		cout<<t<<" ";
		for(int i=head[t];i!=-1;i=edges[i].next){
			indgree[edges[i].to]--;
			if(indgree[edges[i].to]==0)
			q.push(edges[i].to);
		}
	}
	return 0;
}
2024/11/20 13:31
加载中...