10698 2024. 04. 09 23:04:36 111 Autó-tortúra cpp17 Időlimit túllépés 61/100 1.6s 8072 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1824 KiB
2 Időlimit túllépés 1.6s 3788 KiB
subtask2 12/12
3 Elfogadva 3ms 2564 KiB
4 Elfogadva 3ms 2352 KiB
5 Elfogadva 3ms 2676 KiB
6 Elfogadva 3ms 2684 KiB
7 Elfogadva 3ms 2824 KiB
8 Elfogadva 3ms 2792 KiB
9 Elfogadva 3ms 2924 KiB
10 Elfogadva 3ms 3144 KiB
subtask3 0/18
11 Elfogadva 3ms 2564 KiB
12 Elfogadva 3ms 2352 KiB
13 Elfogadva 3ms 2676 KiB
14 Elfogadva 3ms 2684 KiB
15 Elfogadva 3ms 2824 KiB
16 Elfogadva 3ms 2792 KiB
17 Elfogadva 3ms 2924 KiB
18 Elfogadva 3ms 3144 KiB
19 Elfogadva 37ms 3292 KiB
20 Időlimit túllépés 1.56s 3144 KiB
21 Időlimit túllépés 1.57s 3324 KiB
22 Időlimit túllépés 1.58s 3464 KiB
23 Elfogadva 439ms 4196 KiB
24 Elfogadva 7ms 4364 KiB
25 Elfogadva 59ms 4788 KiB
26 Elfogadva 29ms 4804 KiB
27 Elfogadva 14ms 4768 KiB
subtask4 25/25
28 Elfogadva 3ms 2564 KiB
29 Elfogadva 3ms 2352 KiB
30 Elfogadva 3ms 2676 KiB
31 Elfogadva 3ms 2684 KiB
32 Elfogadva 3ms 2824 KiB
33 Elfogadva 3ms 2792 KiB
34 Elfogadva 3ms 2924 KiB
35 Elfogadva 3ms 3144 KiB
36 Elfogadva 574ms 5184 KiB
37 Elfogadva 570ms 5176 KiB
38 Elfogadva 575ms 5252 KiB
39 Elfogadva 268ms 4920 KiB
40 Elfogadva 79ms 4664 KiB
41 Elfogadva 9ms 4680 KiB
42 Elfogadva 79ms 5224 KiB
43 Elfogadva 158ms 5004 KiB
44 Elfogadva 68ms 4984 KiB
45 Elfogadva 26ms 4916 KiB
subtask5 24/24
46 Elfogadva 467ms 4752 KiB
47 Elfogadva 414ms 5036 KiB
48 Elfogadva 456ms 4916 KiB
49 Elfogadva 423ms 5012 KiB
50 Elfogadva 273ms 4748 KiB
51 Elfogadva 458ms 4864 KiB
52 Elfogadva 405ms 4736 KiB
53 Elfogadva 448ms 4872 KiB
54 Elfogadva 412ms 4892 KiB
55 Elfogadva 263ms 4736 KiB
subtask6 0/21
56 Elfogadva 3ms 2564 KiB
57 Elfogadva 3ms 2352 KiB
58 Elfogadva 3ms 2676 KiB
59 Elfogadva 3ms 2684 KiB
60 Elfogadva 3ms 2824 KiB
61 Elfogadva 3ms 2792 KiB
62 Elfogadva 3ms 2924 KiB
63 Elfogadva 3ms 3144 KiB
64 Elfogadva 37ms 3292 KiB
65 Időlimit túllépés 1.56s 3144 KiB
66 Időlimit túllépés 1.57s 3324 KiB
67 Időlimit túllépés 1.58s 3464 KiB
68 Elfogadva 439ms 4196 KiB
69 Elfogadva 7ms 4364 KiB
70 Elfogadva 59ms 4788 KiB
71 Elfogadva 29ms 4804 KiB
72 Elfogadva 14ms 4768 KiB
73 Elfogadva 574ms 5184 KiB
74 Elfogadva 570ms 5176 KiB
75 Elfogadva 575ms 5252 KiB
76 Elfogadva 268ms 4920 KiB
77 Elfogadva 79ms 4664 KiB
78 Elfogadva 9ms 4680 KiB
79 Elfogadva 79ms 5224 KiB
80 Elfogadva 158ms 5004 KiB
81 Elfogadva 68ms 4984 KiB
82 Elfogadva 26ms 4916 KiB
83 Elfogadva 467ms 4752 KiB
84 Elfogadva 414ms 5036 KiB
85 Elfogadva 456ms 4916 KiB
86 Elfogadva 423ms 5012 KiB
87 Elfogadva 273ms 4748 KiB
88 Elfogadva 458ms 4864 KiB
89 Elfogadva 405ms 4736 KiB
90 Elfogadva 448ms 4872 KiB
91 Elfogadva 412ms 4892 KiB
92 Elfogadva 263ms 4736 KiB
93 Időlimit túllépés 1.531s 4432 KiB
94 Időlimit túllépés 1.554s 4416 KiB
95 Időlimit túllépés 1.557s 4348 KiB
96 Elfogadva 356ms 6272 KiB
97 Elfogadva 372ms 5908 KiB
98 Időlimit túllépés 1.557s 4768 KiB
99 Időlimit túllépés 1.554s 4224 KiB
100 Időlimit túllépés 1.567s 7712 KiB
101 Időlimit túllépés 1.562s 7920 KiB
102 Időlimit túllépés 1.57s 7760 KiB
103 Időlimit túllépés 1.567s 7832 KiB
104 Időlimit túllépés 1.575s 7796 KiB
105 Időlimit túllépés 1.567s 7776 KiB
106 Időlimit túllépés 1.55s 7864 KiB
107 Időlimit túllépés 1.529s 7808 KiB
108 Időlimit túllépés 1.577s 8072 KiB
109 Elfogadva 252ms 5252 KiB
110 Időlimit túllépés 1.577s 5436 KiB
111 Elfogadva 603ms 5420 KiB
112 Időlimit túllépés 1.565s 4356 KiB
113 Elfogadva 691ms 5352 KiB
114 Időlimit túllépés 1.574s 7832 KiB
115 Elfogadva 1.412s 6340 KiB
116 Elfogadva 759ms 6156 KiB
117 Időlimit túllépés 1.562s 7804 KiB
118 Időlimit túllépés 1.582s 7464 KiB