제출 #104501

#제출 시각아이디문제언어결과실행 시간메모리
104501dfistric악어의 지하 도시 (IOI11_crocodile)C++14
89 / 100
2036 ms80180 KiB
#include <bits/stdc++.h>

#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define REP(i, n) FOR(i, 0, n)
#define ll long long
#define X first
#define Y second

using namespace std;

const int MAXN = 100100;
ll dist[MAXN];
ll inf = (1LL << 60);
vector <pair <int, ll> > ve[MAXN];
int n, m;

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) {
    n = N, m = M;

    REP(i, m) {
        int a = R[i][0], b = R[i][1];
        ll c = L[i];
        ve[a].push_back({b, c});
        ve[b].push_back({a, c});
    }

    REP(i, n) dist[i] = inf;
    REP(i, K) dist[P[i]] = 0;

    REP(t, n) {
        REP(x, n) {
            ll a = inf, b = inf;
            int num = 0;
            for (auto tr : ve[x]) {
                int y = tr.X;
                ll d = tr.Y;
                if (dist[y] != inf) num++;
                b = min(b, dist[y] + d);
                if (a > b) swap(a, b); 
            }
            
            if (dist[x] > b) {
                dist[x] = b;
            }
        }
    }

    return dist[0];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...