70分求助!
查看原帖
70分求助!
746240
linmoxi楼主2024/11/29 18:10
#include <bits/stdc++.h>
using namespace std;
const int N=1e4+5;
queue<int>q;
vector<int>v[N];
int din[N];
int c[N];
int main(){
    int n,k,p;
	cin>>n>>k>>p;
	memset(c,-1,sizeof(c));
	for(int i=1;i<=p;i++){
		int x;
		cin>>x;
		q.push(x);
		c[x]=0;
	}
	int t;
	cin>>t;
	for(int i=1;i<=t;i++){
		int y,l;
		cin>>l>>y;
		for(int j=1;j<=y;j++){
			int x;
			cin>>x;
			v[x].push_back(l);
			din[l]++;
		}
	}
	while(q.size()){
		int o=q.front();
		q.pop();
		//cout<<o<<" "<<v[o].size()<<endl;
		for(int i=0;i<v[o].size();i++){
			//cout<<o<<" "<<v[o][i]<<" "<<din[v[o][i]]<<endl;
			if(--din[v[o][i]]==0){
				q.push(v[o][i]);
				c[v[o][i]]=c[o]+1;
			}
		}
	}
	cout<<c[k];
    return 0;
}
2024/11/29 18:10
加载中...