topo样例没过70分求调
查看原帖
topo样例没过70分求调
941575
Stars_visitor_tyw楼主2023/12/22 22:58
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, in[200005], cnt, sum[5005];
vector<int> nbr[1005];
void topo()
{
	queue<int> q;
	for(int i=0;i<505;i++)
	{
		if(in[i]==0&&sum[i])
		{
			q.push(i);
		}
	}
	while(q.empty()==0)
	{
		int cur=q.front();
		q.pop();
		for(auto nxt:nbr[cur])
		{
			in[nxt]--;
			if(in[nxt]==0)
			{
				q.push(nxt);
				cnt++;
			}
		} 
	}
	if(cnt==n)
	{
	    cout<<"YES";
	}
	else
	{
	    cout<<n-cnt;
	}
	return ;
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
	    int x, m;
	    cin>>x>>m;
	    sum[x]++;
	    while(m--)
	    {
	        int tmp;
	        cin>>tmp;
	        nbr[x].push_back(tmp);
	        in[tmp]++;
	    }
	}
	topo();
}
2023/12/22 22:58
加载中...