제출 #1295394

#제출 시각아이디문제언어결과실행 시간메모리
1295394hssaan_arif악어의 지하 도시 (IOI11_crocodile)C++20
89 / 100
2100 ms170764 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; #define endl "\n" #define pb push_back // #define int long long #define fi first #define se second const int N = 3e5 + 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; 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]}); vi[P[i]] = 1; } while(pq.size()){ int v = pq.top().se , sr = pq.top().fi ; pq.pop(); if (vi[v] != 1){ vi[v]++; continue; }else{ Dis[v] = sr; for (int u : lis[v]){ pq.push({Dis[v] + mp[{v,u}] , u}); } vi[v]++; } } // cout << Dis[0] << endl; return Dis[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...