제출 #1295920

#제출 시각아이디문제언어결과실행 시간메모리
1295920hssaan_arif악어의 지하 도시 (IOI11_crocodile)C++20
89 / 100
2101 ms184304 KiB
#include "crocodile.h"
// #include <bits/stdc++.h>
#include<iostream>
#include<vector>
#include<queue>
#include<map>
using namespace std;

#define endl "\n"
#define pb push_back
// #define int long long
#define fi first
#define se second

const int N = 1e5 + 5, M = 1e9 + 7, LG = 20;

int n , A[N] ,m ,k, u , v , l , R[N][2] , L[N] , P[N];
vector<int> lis[N];


int travel_plan(int n, int m, int R[][2], int L[], int k, int P[])
{
    int vi[n] = {} , Dis[N] = {};
    map<pair<int,int> , int> mp , cn;
    for (int i=0 ; i<n ; i++){
        Dis[i] = 1e9;
    }
    for (int i=0 ; i<m ; i++){
        int u = R[i][0] , v = R[i][1];
        lis[u].pb(v);
        lis[v].pb(u);
        mp[{u,v}] = mp[{v,u}] = L[i];
    }
    
    priority_queue<pair<int,int> , vector<pair<int,int>> , greater<pair<int,int>>> pq;
    for (int i=0 ; i<k ; i++){
        Dis[P[i]] = 0;
        pq.push({0 , P[i]});
        // cn[P[i]] = 2;
        vi[P[i]] = 1;
    }
    
    while(pq.size() && Dis[0] == 1e9){
        int v = pq.top().se , sr = pq.top().fi ; pq.pop();
        if (vi[v] != 1){
            vi[v]++;
            continue;
        }else{
            Dis[v] = sr;
            vi[v]++;
            for (int u : lis[v]){
                if (cn[{Dis[v] + mp[{v,u}] , u}]>=2 || vi[u]>=2 || Dis[u]!=1e9) continue;
                cn[{Dis[v] + mp[{v,u}] , u}]++;
                pq.push({Dis[v] + mp[{v,u}] , u});
            }
            
        }
    }
    // cout << Dis[0] << endl;
    return Dis[0];
}

// int main(){
//     cin >> n >> m >> k;
//     for (int i=0 ; i<m ; i++){
//         cin >> u >> v >> l;
//         R[i][0] = u;
//         R[i][1] = v;
//         L[i] = l;
//     }
//     for (int i=0 ; i<k ; i++){
//         cin >> l;
//         P[i] = l;
//     }

//     cout << travel_plan(n , m , R , L , k , P);
// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...