闻灌lao多
  • 板块灌水区
  • 楼主Liu_Yu_Heng
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/12/8 16:51
  • 上次更新2024/12/8 17:10:32
查看原帖
闻灌lao多
1072009
Liu_Yu_Heng楼主2024/12/8 16:51

ti
25分

#include<bits/stdc++.h>
using namespace std;
int n,k,p,ru[500001],cnt=-1,tian,fi=0;
vector<int>v[500001];
queue<int>q;
void bfs(int x){
	for(int i=1;i<=n;i++){
		if(ru[i]==0){
			q.push(i);
		}
	}
	while(!q.empty()){
		int f=q.front();
		q.pop();
		for(int i=0;i<v[f].size();i++){
			int j=v[f][i];
			ru[j]--;
			if(ru[j]==0&&j==k){
				fi=1;
				cout<<tian;
				return;
			}else if(ru[j]==0){
				q.push(j); 
			}
		}
		tian++;
	}
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0);
	cin>>n>>k>>p;
	for(int i=1;i<=p;i++){
		int a;
		cin>>a;
		if(a==k){
			cout<<0;
			return 0;
		}
	}
	int r;
	cin>>r;
	for(int i=1;i<=r;i++){
		int a,b,c;
		cin>>a>>b;
		for(int j=1;j<=b;j++){
			cin>>c;
			v[c].push_back(a);
			ru[a]++;
		}
	}
	bfs(1);
	
	if(fi!=1){
		cout<<cnt;
	}
	return 0;
}

2024/12/8 16:51
加载中...