社区讨论

玄关

灌水区参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m4e5k26a
此快照首次捕获于
2024/12/07 20:29
去年
此快照最后确认于
2024/12/07 20:36
去年
查看原帖
原题
25分代码:
CPP
#include<bits/stdc++.h>
using namespace std;
int n,k,p,ru[500001],cnt=-1,tian,f=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){
				f=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(f!=1){
		cout<<cnt;
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...