66592023-12-15 17:49:58anonVillanyautócpp17Időlimit túllépés 0/601.1s3960 KiB
#include <bits/stdc++.h>

#define MAX_N 100

#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define all(x) x.begin(), x.end()

typedef long long ll;

using namespace std;

const ll INF = ~(1LL << 63);

ll N, M, K, G[MAX_N + 1][MAX_N + 1];
bool vis[MAX_N + 1];
unordered_map<ll,array<ll,2>> states;

void walk(ll node, ll k, ll cap, ll max_cap) {
    if(cap < 0)
        return;

    auto found = states.find(node);

    if(found != states.end() && ((found->second[0] > k && found->second[1] > cap) || (found->second[0] == k && found->second[1] > cap) || (found->second[0] > k && found->second[1] == cap)))
        return;

    if(found == states.end())
        states[node] = { k, cap };
    else if(found->second[0] <= k && found->second[1] <= cap) {
        found->second[0] = k;
        found->second[1] = cap;
    }

    vis[node] = true;

    if(k > 0)
        walk(node, k - 1, max_cap, max_cap);

    for(ll i = 1; i <= MAX_N; i++) {
        if(G[node][i])
            walk(i, k, cap - G[node][i], max_cap);
    }
}

void dbg_vis() {
    for(ll i = 1; i <= N; i++) {
        if(vis[i])
            cout << i << ' ';
    }
    cout << endl;
}

int main()
{
    FastIO;
    ll n1, n2, C;
    set<ll> caps;
    cin >> N >> M >> K;
    for(ll i = 0; i < M; i++) {
        cin >> n1 >> n2 >> C;
        G[n1][n2] = C;
        G[n2][n1] = C;
        caps.insert(C);
    }
    set<ll>::iterator it;
    for(it = caps.begin(); it != caps.end(); it++) {
        for(ll i = 1; i <= N; i++) {
            fill(vis + 1, vis + N + 1, false);
            states.clear();
            walk(i, K, 0, *it);
            if(!all_of(vis + 1, vis + N + 1, [](auto &a) { return a; }))
                goto next;
        }
        cout << *it << '\n';
        break;
        next:;
    }
    return 0;
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/60
1Elfogadva0/03ms1972 KiB
2Időlimit túllépés0/01.1s1528 KiB
3Hibás válasz0/14ms2372 KiB
4Hibás válasz0/14ms2416 KiB
5Hibás válasz0/14ms2688 KiB
6Hibás válasz0/24ms2820 KiB
7Hibás válasz0/216ms2988 KiB
8Hibás válasz0/219ms3388 KiB
9Hibás válasz0/13ms2952 KiB
10Hibás válasz0/13ms2884 KiB
11Hibás válasz0/13ms2956 KiB
12Hibás válasz0/23ms3240 KiB
13Hibás válasz0/23ms3408 KiB
14Hibás válasz0/23ms3132 KiB
15Hibás válasz0/33ms3384 KiB
16Hibás válasz0/313ms3344 KiB
17Hibás válasz0/23ms3560 KiB
18Időlimit túllépés0/21.1s2780 KiB
19Időlimit túllépés0/21.072s3536 KiB
20Időlimit túllépés0/21.052s3692 KiB
21Időlimit túllépés0/21.065s3532 KiB
22Hibás válasz0/2570ms3512 KiB
23Időlimit túllépés0/31.047s2944 KiB
24Időlimit túllépés0/31.029s2932 KiB
25Időlimit túllépés0/31.065s3140 KiB
26Időlimit túllépés0/31.062s3316 KiB
27Időlimit túllépés0/31.062s3292 KiB
28Időlimit túllépés0/31.044s3092 KiB
29Időlimit túllépés0/31.062s3128 KiB
30Időlimit túllépés0/31.065s3960 KiB