Submission #978958

#TimeUsernameProblemLanguageResultExecution timeMemory
978958Panda50O악어의 지하 도시 (IOI11_crocodile)C++14
89 / 100
424 ms61672 KiB
#include "crocodile.h" #include<bits/stdc++.h> using namespace std; #define MAX_N 50005 #define MAX_M 1000005 #define pii pair<int,int> vector<pair<int,int>> adj[MAX_N]; int vis[MAX_N] = {0}; priority_queue<pii, vector<pii>, greater<pii>> pq; int dist[MAX_N] = {0}; int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { for(int i = 0; i < K; ++i) { vis[P[i]] = 2; } for(int i = 0; i < M; ++i) { int a = R[i][0], b = R[i][1]; if(!(vis[a] == 2 && vis[b] == 2)) { if(!(vis[a] == 2)) swap(a, b); if(vis[a] == 2) pq.emplace(L[i], b); } adj[R[i][0]].emplace_back(R[i][1], L[i]); adj[R[i][1]].emplace_back(R[i][0], L[i]); } while(!pq.empty()) { int d = pq.top().first, u = pq.top().second; pq.pop(); if(vis[u] == 2) continue; else if(vis[u] == 1) { vis[u] = 2; dist[u] = d; for(auto _ : adj[u]) { int v = _.first, w = _.second; if(vis[v] == 2) continue; pq.emplace(d + w, v); } } else { vis[u] = 1; } } return dist[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...