70,求调,玄1关
查看原帖
70,求调,玄1关
947850
yoimiya_op楼主2024/7/17 09:33
#include<bits/stdc++.h>

using namespace std;
const int N=1e4+50;
int din[N];
vector<int> v[N],tp;
int n,x,m,y;

int ans=0;
bool r[N];
int dout[N];
void toposort(){
	queue<int> q;
	for(int i=1;i<=n;i++){
		if(din[i]==0) 
			q.push(i);
	}
	
	while(q.size()){
		ans++;
		int p=q.front();
		//cout<<p<<" ";
		q.pop();
		for(auto y:v[p]){
			din[y]--;
			if(!din[y]&&dout[y]) q.push(y);
		}
	}
	if(ans==n) cout<<"YES";
	else cout<<n-ans;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x>>m;
		for(int j=1;j<=m;j++){
			cin>>y;
			v[x].push_back(y);
			din[y]++;
			dout[x]++;
		}
	}
	toposort();
	return 0;
} 
2024/7/17 09:33
加载中...