106982024-04-09 23:04:36111Autó-tortúracpp17Időlimit túllépés 61/1001.6s8072 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 j=K-1;j>=0;j--){
			b[j]=min(b[j],b[j+1]);
			for(int k=0;k<B;k++){
				if(x[k][i]<=K-j&&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++){
					if(x[kk][i]<=K-j&&x[k][i-1]<=K){
						b[j]=min(b[j],a[x[k][i-1]]+x[k][i-1]+x[kk][i]+y[k][kk]);
					}
				}
			}
		}
		a=b;
	}
	cout<<(a[0]==INF?-1:a[0])<<'\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1824 KiB
2Időlimit túllépés1.6s3788 KiB
subtask212/12
3Elfogadva3ms2564 KiB
4Elfogadva3ms2352 KiB
5Elfogadva3ms2676 KiB
6Elfogadva3ms2684 KiB
7Elfogadva3ms2824 KiB
8Elfogadva3ms2792 KiB
9Elfogadva3ms2924 KiB
10Elfogadva3ms3144 KiB
subtask30/18
11Elfogadva3ms2564 KiB
12Elfogadva3ms2352 KiB
13Elfogadva3ms2676 KiB
14Elfogadva3ms2684 KiB
15Elfogadva3ms2824 KiB
16Elfogadva3ms2792 KiB
17Elfogadva3ms2924 KiB
18Elfogadva3ms3144 KiB
19Elfogadva37ms3292 KiB
20Időlimit túllépés1.56s3144 KiB
21Időlimit túllépés1.57s3324 KiB
22Időlimit túllépés1.58s3464 KiB
23Elfogadva439ms4196 KiB
24Elfogadva7ms4364 KiB
25Elfogadva59ms4788 KiB
26Elfogadva29ms4804 KiB
27Elfogadva14ms4768 KiB
subtask425/25
28Elfogadva3ms2564 KiB
29Elfogadva3ms2352 KiB
30Elfogadva3ms2676 KiB
31Elfogadva3ms2684 KiB
32Elfogadva3ms2824 KiB
33Elfogadva3ms2792 KiB
34Elfogadva3ms2924 KiB
35Elfogadva3ms3144 KiB
36Elfogadva574ms5184 KiB
37Elfogadva570ms5176 KiB
38Elfogadva575ms5252 KiB
39Elfogadva268ms4920 KiB
40Elfogadva79ms4664 KiB
41Elfogadva9ms4680 KiB
42Elfogadva79ms5224 KiB
43Elfogadva158ms5004 KiB
44Elfogadva68ms4984 KiB
45Elfogadva26ms4916 KiB
subtask524/24
46Elfogadva467ms4752 KiB
47Elfogadva414ms5036 KiB
48Elfogadva456ms4916 KiB
49Elfogadva423ms5012 KiB
50Elfogadva273ms4748 KiB
51Elfogadva458ms4864 KiB
52Elfogadva405ms4736 KiB
53Elfogadva448ms4872 KiB
54Elfogadva412ms4892 KiB
55Elfogadva263ms4736 KiB
subtask60/21
56Elfogadva3ms2564 KiB
57Elfogadva3ms2352 KiB
58Elfogadva3ms2676 KiB
59Elfogadva3ms2684 KiB
60Elfogadva3ms2824 KiB
61Elfogadva3ms2792 KiB
62Elfogadva3ms2924 KiB
63Elfogadva3ms3144 KiB
64Elfogadva37ms3292 KiB
65Időlimit túllépés1.56s3144 KiB
66Időlimit túllépés1.57s3324 KiB
67Időlimit túllépés1.58s3464 KiB
68Elfogadva439ms4196 KiB
69Elfogadva7ms4364 KiB
70Elfogadva59ms4788 KiB
71Elfogadva29ms4804 KiB
72Elfogadva14ms4768 KiB
73Elfogadva574ms5184 KiB
74Elfogadva570ms5176 KiB
75Elfogadva575ms5252 KiB
76Elfogadva268ms4920 KiB
77Elfogadva79ms4664 KiB
78Elfogadva9ms4680 KiB
79Elfogadva79ms5224 KiB
80Elfogadva158ms5004 KiB
81Elfogadva68ms4984 KiB
82Elfogadva26ms4916 KiB
83Elfogadva467ms4752 KiB
84Elfogadva414ms5036 KiB
85Elfogadva456ms4916 KiB
86Elfogadva423ms5012 KiB
87Elfogadva273ms4748 KiB
88Elfogadva458ms4864 KiB
89Elfogadva405ms4736 KiB
90Elfogadva448ms4872 KiB
91Elfogadva412ms4892 KiB
92Elfogadva263ms4736 KiB
93Időlimit túllépés1.531s4432 KiB
94Időlimit túllépés1.554s4416 KiB
95Időlimit túllépés1.557s4348 KiB
96Elfogadva356ms6272 KiB
97Elfogadva372ms5908 KiB
98Időlimit túllépés1.557s4768 KiB
99Időlimit túllépés1.554s4224 KiB
100Időlimit túllépés1.567s7712 KiB
101Időlimit túllépés1.562s7920 KiB
102Időlimit túllépés1.57s7760 KiB
103Időlimit túllépés1.567s7832 KiB
104Időlimit túllépés1.575s7796 KiB
105Időlimit túllépés1.567s7776 KiB
106Időlimit túllépés1.55s7864 KiB
107Időlimit túllépés1.529s7808 KiB
108Időlimit túllépés1.577s8072 KiB
109Elfogadva252ms5252 KiB
110Időlimit túllépés1.577s5436 KiB
111Elfogadva603ms5420 KiB
112Időlimit túllépés1.565s4356 KiB
113Elfogadva691ms5352 KiB
114Időlimit túllépés1.574s7832 KiB
115Elfogadva1.412s6340 KiB
116Elfogadva759ms6156 KiB
117Időlimit túllépés1.562s7804 KiB
118Időlimit túllépés1.582s7464 KiB