90求助
查看原帖
90求助
1331420
collegiate楼主2024/11/19 17:02
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
ll ind[N];
bool used[N];
vector<ll> G[N];
ll n,x,y,op,maxn;
queue<ll> q;

void topu(){
	ll cnt=0;
	while(!q.empty()){
		ll top=q.front();q.pop();
		cnt++;
		for(auto y:G[top]){
			if(used[y]){
				ind[y]--;
				if(ind[y]==0) q.push(y);				
			}
		}
	}
	if(cnt==n) cout<<"Yes";
	else cout<<n-cnt;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x>>y;
		maxn=max(maxn,x);
		used[x]=1;
		while(y--){
			cin>>op;
			maxn=max(maxn,op);
			G[x].push_back(op);	
			ind[op]++;
		}
	}
	for(int i=1;i<=maxn;i++){
		if(ind[i]==0 && used[i]) q.push(i);
	}
	topu();
	return 0;
}
2024/11/19 17:02
加载中...