107022024-04-09 23:17:07111Autó-tortúracpp17Elfogadva 100/100721ms13428 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

#define INF (int)1e16

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
#ifdef CB
	freopen("be2.txt","r",stdin);
//	freopen("ki.txt","w",stdout);
#endif
	int N,M,K;
	cin>>N>>M>>K;
	vector<vector<int>>g(N+1);
	for(int i=0;i<M;i++){
		int a,b;
		cin>>a>>b;
		g[a].push_back(b);
		g[b].push_back(a);
	}
	int L;
	cin>>L;
	vector<int>l(L);
	for(int i=0;i<L;i++){
		cin>>l[i];
	}
	int B;
	cin>>B;
	vector<int>b(B);
	for(int i=0;i<B;i++){
		cin>>b[i];
	}
	vector<vector<int>>x(B,vector<int>(L,INF));
	vector<vector<int>>y(B,vector<int>(B,INF));
	for(int i=0;i<B;i++){
		deque<int>q;
		vector<int>d(N+1,INF);
		d[b[i]]=0;
		q.push_back(b[i]);
		while(!q.empty()){
			int i=q.front();
			q.pop_front();
			for(int j:g[i]){
				if(d[i]+1<d[j]){
					d[j]=d[i]+1;
					q.push_back(j);
				}
			}
		}
		for(int j=0;j<L;j++){
			if(d[l[j]]<=K){
				x[i][j]=d[l[j]];
			}
		}
		for(int j=0;j<B;j++){
			if(d[b[j]]<=K){
				y[i][j]=d[b[j]];
			}
		}
	}
	for(int i=0;i<B;i++){
		for(int j=0;j<B;j++){
			for(int k=0;k<B;k++){
				y[j][k]=min(y[j][k],y[j][i]+y[i][k]);
			}
		}
	}
	vector<int>a(K+2);
	a[K+1]=INF;
	for(int i=1;i<L;i++){
		vector<int>b(K+2,INF);
		deque<int>q;
		vector<int>d(N+1,INF);
		d[l[i-1]]=0;
		q.push_back(l[i-1]);
		while(!q.empty()){
			int i=q.front();
			q.pop_front();
			for(int j:g[i]){
				if(d[i]+1<d[j]){
					d[j]=d[i]+1;
					q.push_back(j);
				}
			}
		}
		int dl=d[l[i]];
		for(int j=0;j+dl<=K;j++){
			b[j]=min(b[j],a[j+dl]+dl);
		}
		for(int k=0;k<B;k++){
			int j=K-x[k][i];
			if(j>=0&&x[k][i-1]<=K){
				b[j]=min(b[j],a[x[k][i-1]]+x[k][i-1]+x[k][i]);
			}
			for(int kk=0;kk<B;kk++){
				int jj=K-x[kk][i];
				if(jj>=0&&x[k][i-1]<=K){
					b[jj]=min(b[jj],a[x[k][i-1]]+x[k][i-1]+x[kk][i]+y[k][kk]);
				}
			}
		}
		for(int j=K-1;j>=0;j--){
			b[j]=min(b[j],b[j+1]);
		}
		a=b;
	}
	cout<<(a[0]==INF?-1:a[0])<<'\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1700 KiB
2Elfogadva347ms6936 KiB
subtask212/12
3Elfogadva3ms2132 KiB
4Elfogadva3ms2288 KiB
5Elfogadva3ms2516 KiB
6Elfogadva3ms2740 KiB
7Elfogadva3ms2976 KiB
8Elfogadva3ms3056 KiB
9Elfogadva3ms3128 KiB
10Elfogadva3ms3216 KiB
subtask318/18
11Elfogadva3ms2132 KiB
12Elfogadva3ms2288 KiB
13Elfogadva3ms2516 KiB
14Elfogadva3ms2740 KiB
15Elfogadva3ms2976 KiB
16Elfogadva3ms3056 KiB
17Elfogadva3ms3128 KiB
18Elfogadva3ms3216 KiB
19Elfogadva4ms3468 KiB
20Elfogadva14ms3820 KiB
21Elfogadva14ms4064 KiB
22Elfogadva13ms3896 KiB
23Elfogadva7ms3756 KiB
24Elfogadva4ms3664 KiB
25Elfogadva14ms4344 KiB
26Elfogadva13ms4276 KiB
27Elfogadva8ms4336 KiB
subtask425/25
28Elfogadva3ms2132 KiB
29Elfogadva3ms2288 KiB
30Elfogadva3ms2516 KiB
31Elfogadva3ms2740 KiB
32Elfogadva3ms2976 KiB
33Elfogadva3ms3056 KiB
34Elfogadva3ms3128 KiB
35Elfogadva3ms3216 KiB
36Elfogadva35ms5240 KiB
37Elfogadva32ms5312 KiB
38Elfogadva35ms5584 KiB
39Elfogadva24ms5424 KiB
40Elfogadva14ms5228 KiB
41Elfogadva8ms5304 KiB
42Elfogadva34ms5780 KiB
43Elfogadva26ms5824 KiB
44Elfogadva26ms5780 KiB
45Elfogadva14ms5716 KiB
subtask524/24
46Elfogadva455ms5904 KiB
47Elfogadva402ms5904 KiB
48Elfogadva444ms5852 KiB
49Elfogadva414ms5980 KiB
50Elfogadva266ms5836 KiB
51Elfogadva449ms5840 KiB
52Elfogadva398ms5724 KiB
53Elfogadva439ms5852 KiB
54Elfogadva409ms5980 KiB
55Elfogadva261ms5956 KiB
subtask621/21
56Elfogadva3ms2132 KiB
57Elfogadva3ms2288 KiB
58Elfogadva3ms2516 KiB
59Elfogadva3ms2740 KiB
60Elfogadva3ms2976 KiB
61Elfogadva3ms3056 KiB
62Elfogadva3ms3128 KiB
63Elfogadva3ms3216 KiB
64Elfogadva4ms3468 KiB
65Elfogadva14ms3820 KiB
66Elfogadva14ms4064 KiB
67Elfogadva13ms3896 KiB
68Elfogadva7ms3756 KiB
69Elfogadva4ms3664 KiB
70Elfogadva14ms4344 KiB
71Elfogadva13ms4276 KiB
72Elfogadva8ms4336 KiB
73Elfogadva35ms5240 KiB
74Elfogadva32ms5312 KiB
75Elfogadva35ms5584 KiB
76Elfogadva24ms5424 KiB
77Elfogadva14ms5228 KiB
78Elfogadva8ms5304 KiB
79Elfogadva34ms5780 KiB
80Elfogadva26ms5824 KiB
81Elfogadva26ms5780 KiB
82Elfogadva14ms5716 KiB
83Elfogadva455ms5904 KiB
84Elfogadva402ms5904 KiB
85Elfogadva444ms5852 KiB
86Elfogadva414ms5980 KiB
87Elfogadva266ms5836 KiB
88Elfogadva449ms5840 KiB
89Elfogadva398ms5724 KiB
90Elfogadva439ms5852 KiB
91Elfogadva409ms5980 KiB
92Elfogadva261ms5956 KiB
93Elfogadva108ms7152 KiB
94Elfogadva105ms7144 KiB
95Elfogadva128ms7376 KiB
96Elfogadva135ms7488 KiB
97Elfogadva46ms7084 KiB
98Elfogadva101ms8036 KiB
99Elfogadva94ms6712 KiB
100Elfogadva688ms13264 KiB
101Elfogadva721ms13428 KiB
102Elfogadva666ms13240 KiB
103Elfogadva574ms13108 KiB
104Elfogadva435ms13128 KiB
105Elfogadva564ms13060 KiB
106Elfogadva556ms13152 KiB
107Elfogadva550ms12996 KiB
108Elfogadva680ms13228 KiB
109Elfogadva143ms5692 KiB
110Elfogadva386ms8504 KiB
111Elfogadva451ms5912 KiB
112Elfogadva356ms6188 KiB
113Elfogadva381ms5964 KiB
114Elfogadva629ms13224 KiB
115Elfogadva90ms6864 KiB
116Elfogadva92ms6828 KiB
117Elfogadva575ms13164 KiB
118Elfogadva209ms12652 KiB