Submission #1138463

#TimeUsernameProblemLanguageResultExecution timeMemory
1138463kitkat12Crocodile's Underground City (IOI11_crocodile)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mp make_pair
#define pb push_back
#define F first
#define S second
#define debug(x) std::cout << #x << ": " << x << "\n"
#define all(v) v.begin(), v.end()
#define li(i,a,b) for (int (i) = (a); (i) < (b); (i)++)
#define endl '\n'
#define mem(name,val) memset(name,val,sizeof(name))
#define min(a,b) (a<=b ? a : b)
#define max(a,b) (a>=b ? a : b)
//using u64 = uint64_t;
//using u128 = __uint128_t;

int travel_plan(int n, int m, int (*r)[2], int *l, int k, int *p){
    const ll inf = 1e18;
    vector<vector<bool>> edg(n, vector<bool>(n));
    vector<pair<int,ll>> adj[n];
    vector<bool> end(n);
    vector<ll> val(n,0);
    li(i,0,m){
        edg[r[i][0]][r[i][1]] = 1;
        edg[r[i][1]][r[i][0]] = 1;
        adj[r[i][0]].pb({r[i][1],l[i]});
        adj[r[i][1]].pb({r[i][0],l[i]});
    }
    li(i,0,n){
        if(end[i]) continue;
        ll b=inf,sb=inf;
        for(auto u : adj[i]){
            if(!end[u.F]) continue;
            ll v = val[u.F] + u.S;
            if(v<b){
                sb=b;
                b=v;
            }
            else if (v < sb && v != b){
                sb=v;
            }
        }
        if(sb!=inf){
            val[i]=sb;
            end[i]=1;
        }
    }
    return val[0];
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...