160602025-03-30 10:54:00szilAutó-tortúracpp17Időlimit túllépés 0/1001.605s71184 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int MAXN = 3001;
const int MAXB = 151;
const int INF = 1e9;

ll dist[MAXN][MAXN], bdist[MAXB][MAXB];

void solve() {
    int n, m, k; cin >> n >> m >> k;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            bdist[i][j] = dist[i][j] = INF;

        }
        bdist[i][i] = dist[i][i] = 0;
    }
    for (int i = 0; i < m; i++) {
        int a, b; cin >> a >> b;
        dist[a][b] = dist[b][a] = 1;
    }
    for (int c = 1; c <= n; c++) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                dist[i][j] = min(dist[i][j], dist[i][c] + dist[c][j]);
            }
        }
    }
    int l; cin >> l;
    vector<int> terv(l+1);
    for (int i = 1; i <= l; i++) cin >> terv[i];
    int b; cin >> b;
    vector<int> ben(b);
    for (int i = 1; i <= b; i++) cin >> ben[i];

    for (int i = 1; i <= b; i++) {
        for (int j = 1; j <= b; j++) {
            int u = ben[i];
            int v = ben[j];

            if (dist[u][v] <= k) {
                bdist[i][j] = min(bdist[i][j], dist[u][v]);
            }
        }
    }

    for (int c = 1; c <= b; c++) {
        for (int i = 1; i <= b; i++) {
            for (int j = 1; j <= b; j++) {
                bdist[i][j] = min(bdist[i][j], bdist[i][c] + bdist[c][j]);
            }
        }
    }

    vector<ll> dp_last(k+1);
    for (int a = 2; a <= l; a++) {
        vector<ll> dp_curr(k+1, INF);

        int start = terv[a-1];
        int goal = terv[a];

        for (int i = 1; i <= b; i++) {
            for (int j = 1; j <= b; j++) {
                ll d = dist[start][ben[i]] + bdist[i][j] + dist[ben[j]][goal];
                ll need = dist[start][ben[i]];
                ll left = k - dist[ben[j]][goal];

                
                if (need > k) continue;
                if (left < 0) continue;

                d += dp_last[need];
                dp_curr[left] = min(dp_curr[left], d);
            }
        }

        if (dist[start][goal] <= k) {
            for (int i = 0; i <= k - dist[start][goal]; i++) {
                dp_curr[i] = min(dp_curr[i], dist[start][goal] + dp_last[i + dist[start][goal]]);
            }
        }

        for (int i = k-1; i >= 0; i--) {
            dp_curr[i] = min(dp_curr[i], dp_curr[i+1]);
        }

        dp_last = dp_curr;
    }

    cout << (*min_element(dp_last.begin(), dp_last.end())) << "\n";
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int t = 1; 
    // cin >> t;
    while (t--) solve();
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Időlimit túllépés1.593s48296 KiB
subtask20/12
3Hibás válasz1ms316 KiB
4Elfogadva1ms512 KiB
5Elfogadva1ms328 KiB
6Elfogadva1ms316 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms316 KiB
9Futási hiba1ms564 KiB
10Hibás válasz1ms316 KiB
subtask30/18
11Hibás válasz1ms316 KiB
12Elfogadva1ms512 KiB
13Elfogadva1ms328 KiB
14Elfogadva1ms316 KiB
15Elfogadva1ms316 KiB
16Elfogadva1ms316 KiB
17Futási hiba1ms564 KiB
18Hibás válasz1ms316 KiB
19Futási hiba3ms1076 KiB
20Hibás válasz32ms2292 KiB
21Elfogadva32ms2100 KiB
22Hibás válasz32ms2100 KiB
23Futási hiba21ms2292 KiB
24Hibás válasz24ms2104 KiB
25Hibás válasz35ms2100 KiB
26Hibás válasz32ms2204 KiB
27Hibás válasz27ms2100 KiB
subtask40/25
28Hibás válasz1ms316 KiB
29Elfogadva1ms512 KiB
30Elfogadva1ms328 KiB
31Elfogadva1ms316 KiB
32Elfogadva1ms316 KiB
33Elfogadva1ms316 KiB
34Futási hiba1ms564 KiB
35Hibás válasz1ms316 KiB
36Időlimit túllépés1.593s70964 KiB
37Időlimit túllépés1.593s70972 KiB
38Időlimit túllépés1.593s70900 KiB
39Időlimit túllépés1.593s70964 KiB
40Időlimit túllépés1.59s70964 KiB
41Időlimit túllépés1.59s70972 KiB
42Időlimit túllépés1.59s70928 KiB
43Időlimit túllépés1.592s71080 KiB
44Időlimit túllépés1.601s71112 KiB
45Időlimit túllépés1.6s71080 KiB
subtask50/24
46Időlimit túllépés1.588s71184 KiB
47Időlimit túllépés1.59s70976 KiB
48Időlimit túllépés1.587s71132 KiB
49Időlimit túllépés1.59s71148 KiB
50Időlimit túllépés1.582s71104 KiB
51Időlimit túllépés1.583s70964 KiB
52Időlimit túllépés1.585s70964 KiB
53Időlimit túllépés1.582s71152 KiB
54Időlimit túllépés1.593s70964 KiB
55Időlimit túllépés1.595s70964 KiB
subtask60/21
56Hibás válasz1ms316 KiB
57Elfogadva1ms512 KiB
58Elfogadva1ms328 KiB
59Elfogadva1ms316 KiB
60Elfogadva1ms316 KiB
61Elfogadva1ms316 KiB
62Futási hiba1ms564 KiB
63Hibás válasz1ms316 KiB
64Futási hiba3ms1076 KiB
65Hibás válasz32ms2292 KiB
66Elfogadva32ms2100 KiB
67Hibás válasz32ms2100 KiB
68Futási hiba21ms2292 KiB
69Hibás válasz24ms2104 KiB
70Hibás válasz35ms2100 KiB
71Hibás válasz32ms2204 KiB
72Hibás válasz27ms2100 KiB
73Időlimit túllépés1.593s70964 KiB
74Időlimit túllépés1.593s70972 KiB
75Időlimit túllépés1.593s70900 KiB
76Időlimit túllépés1.593s70964 KiB
77Időlimit túllépés1.59s70964 KiB
78Időlimit túllépés1.59s70972 KiB
79Időlimit túllépés1.59s70928 KiB
80Időlimit túllépés1.592s71080 KiB
81Időlimit túllépés1.601s71112 KiB
82Időlimit túllépés1.6s71080 KiB
83Időlimit túllépés1.588s71184 KiB
84Időlimit túllépés1.59s70976 KiB
85Időlimit túllépés1.587s71132 KiB
86Időlimit túllépés1.59s71148 KiB
87Időlimit túllépés1.582s71104 KiB
88Időlimit túllépés1.583s70964 KiB
89Időlimit túllépés1.585s70964 KiB
90Időlimit túllépés1.582s71152 KiB
91Időlimit túllépés1.593s70964 KiB
92Időlimit túllépés1.595s70964 KiB
93Időlimit túllépés1.582s70964 KiB
94Időlimit túllépés1.58s70964 KiB
95Időlimit túllépés1.582s70964 KiB
96Időlimit túllépés1.583s70964 KiB
97Időlimit túllépés1.595s70964 KiB
98Időlimit túllépés1.504s12976 KiB
99Időlimit túllépés1.598s70964 KiB
100Időlimit túllépés1.598s70968 KiB
101Időlimit túllépés1.593s70964 KiB
102Időlimit túllépés1.605s71104 KiB
103Időlimit túllépés1.605s70964 KiB
104Időlimit túllépés1.605s70960 KiB
105Időlimit túllépés1.597s71104 KiB
106Időlimit túllépés1.605s71004 KiB
107Időlimit túllépés1.605s70964 KiB
108Időlimit túllépés1.605s71016 KiB
109Időlimit túllépés1.585s70964 KiB
110Időlimit túllépés1.605s70964 KiB
111Időlimit túllépés1.605s71144 KiB
112Időlimit túllépés1.605s71020 KiB
113Időlimit túllépés1.59s70904 KiB
114Időlimit túllépés1.605s70964 KiB
115Időlimit túllépés1.605s71140 KiB
116Időlimit túllépés1.605s71064 KiB
117Időlimit túllépés1.588s70964 KiB
118Időlimit túllépés1.603s70916 KiB