RE+WA 30
  • 板块P2712 摄像头
  • 楼主zhonglidog
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/15 10:08
  • 上次更新2024/12/15 12:53:23
查看原帖
RE+WA 30
1065593
zhonglidog楼主2024/12/15 10:08
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1005;
struct edge{
	int v,next;
}e[MAXN];
int tot,head[MAXN],din[MAXN];
void addedge(int u,int v){
	e[++tot]=(edge){v,head[u]};
	head[u]=tot;
	din[v]++;
	return;
}
int n,u[MAXN];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		int m;
		cin>>u[i]>>m;
		for(int i=1;i<=m;i++){
			int v;
			cin>>v;
			addedge(u[i],v);
		}
	}
	queue<int> q;
	vector<int>l;
	for(int j=1;j<=n;j++){
		if(din[j]==0) q.push(j); 
//		cout<<din[j]<<" ";
	}while(!q.empty()){
		int x=q.front();q.pop();
		for(int i=head[x];i;i=e[i].next){
			int v=e[i].v;
			if(--din[v]) continue;
			for(int i=1;i<=n;i++)
				if(u[i]==v) q.push(v);
		}
		l.push_back(x);
	}
//	for(int i=0;i<l.size();i++) cout<<l[i]<<" ";
	if(l.size()==n) cout<<"YES"<<endl;
	else cout<<n-l.size()<<endl;
	return 0;
}
2024/12/15 10:08
加载中...