106952024-04-09 21:07:42111Rendőrségi őrjárat 2cpp17Accepted 100/10078ms44504 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N,M,L;
	cin>>N>>M>>L;
	vector<vector<int>>g(N);
	for(int i=0;i<M;i++){
		int a,b;
		cin>>a>>b;
		g[a].push_back(b);
		g[b].push_back(a);
	}
	vector<int>v(N,-1);
	for(int i=0;i<L;i++){
		int c;
		cin>>c;
		v[c]=i;
	}
	vector<int>d(N,N*2);
	priority_queue<pair<int,int>>q;
	d[0]=0;
	q.emplace(0,0);
	while(!q.empty()){
		auto[c,i]=q.top();
		q.pop();
		c*=-1;
		if(c!=d[i]){
			continue;
		}
		for(int j:g[i]){
			int dd=c+1;
			if(v[j]==dd%L){
				dd++;
			}
			if(dd<d[j]){
				d[j]=dd;
				q.emplace(-dd,j);
			}
		}
	}
	cout<<d[N-1]<<'\n';
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1832 KiB
2Accepted3ms2052 KiB
subtask230/30
3Accepted3ms2488 KiB
4Accepted3ms2700 KiB
5Accepted3ms2932 KiB
6Accepted3ms3048 KiB
7Accepted3ms3072 KiB
8Accepted3ms3268 KiB
9Accepted3ms3464 KiB
subtask330/30
10Accepted56ms18572 KiB
11Accepted56ms20044 KiB
12Accepted57ms21532 KiB
13Accepted59ms23276 KiB
14Accepted61ms24828 KiB
subtask440/40
15Accepted76ms27436 KiB
16Accepted78ms28948 KiB
17Accepted70ms29272 KiB
18Accepted71ms30824 KiB
19Accepted71ms32360 KiB
20Accepted75ms34200 KiB
21Accepted74ms35740 KiB
22Accepted75ms37508 KiB
23Accepted70ms44504 KiB
24Accepted61ms40228 KiB