70分求助
  • 板块P2712 摄像头
  • 楼主jknbhbuy
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/8/18 09:44
  • 上次更新2023/11/4 10:14:51
查看原帖
70分求助
309796
jknbhbuy楼主2021/8/18 09:44
#include<bits/stdc++.h>

using namespace std;

const int N=10000005;
int n,head[N],next[N],to[N],num,ru[N];
int q[N],h=1,t=1;
void add(int x,int y){
	next[++num]=head[x];
	head[x]=num;
	to[num]=y;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		int u,m;
		cin>>u>>m;
		for(int i=1;i<=m;i++){
			int v;
			cin>>v;
			add(u,v);
			ru[v]++;
		}
	}
	for(int i=1;i<=n;i++){
		if(!ru[i]){
			q[t++]=i;
		}
	}
	while(h<t){
		int top=q[h++];
		n--;
		for(int i=head[top];i;i=next[i]){
			if(--ru[to[i]]==0&&to[i]<=n){
				q[t++]=to[i];
			}
		}
	}
	if(!n)cout<<"YES";
	else {
		cout<<n;
	}
	return 0;
}
2021/8/18 09:44
加载中...