70分求调
查看原帖
70分求调
794148
cyx20091026楼主2024/12/30 16:02
#include<bits/stdc++.h>
using namespace std;
int n,num,vis[505][505],degree[505];
int has[505];
queue<int>q;
int main(){
	cin>>n;
	int x,m,y;
	for(int i=1;i<=n;i++){
		cin>>x>>m;
		has[x]=1;
		for(int j=1;j<=m;j++){
			cin>>y;
			vis[x][y]=1;
			degree[y]++;
		}
	}
	for(int i=1;i<=n;i++){
		if(degree[i]==0){
			q.push(i);
		}
	}
	while(!q.empty()){
		int c=q.front();
		q.pop();
		num++;
		for(int i=1;i<=n;i++){
			if(vis[c][i]){
				degree[i]--;
				if(has[i]&&degree[i]==0){
					q.push(i);
				}
			}
		}
	}
	if(num==n){
		cout<<"YES";
	}
	else cout<<n-num;
	return 0;
} 
2024/12/30 16:02
加载中...