Submission #1316480

#TimeUsernameProblemLanguageResultExecution timeMemory
1316480khanhphucscratchCrocodile's Underground City (IOI11_crocodile)C++20
100 / 100
461 ms50904 KiB
#include "crocodile.h"
#include<bits/stdc++.h>
using namespace std;
vector<array<int, 2>> ad[100005];
int dis[100005], c[100005];
int travel_plan(int n, int m, int R[][2], int L[], int K, int P[])
{
    for(int i = 0; i < m; i++){
        int u = R[i][0], v = R[i][1], c = L[i];
        ad[u].push_back({v, c});
        ad[v].push_back({u, c});
    }
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> w;
    memset(dis, -1, sizeof(dis));
    for(int i = 0; i < K; i++){
        int u = P[i];
        c[u] = 1; dis[u] = 0;
        w.push({0, u});
    }
    while(w.size() > 0){
        int u = w.top().second, d = w.top().first;
        w.pop();
        //cerr<<"A"<<u<<" "<<d<<" "<<c[u]<<" "<<c[0]<<endl;
        if(++c[u] != 2) continue;
        dis[u] = d;
        for(auto &[v, dd] : ad[u]) if(dis[v] == -1){
            w.push({d+dd, v});
        }
    }
    return dis[0];
}


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