Submission #1062980

#TimeUsernameProblemLanguageResultExecution timeMemory
1062980VMaksimoski008Rail (IOI14_rail)C++17
56 / 100
1684 ms197252 KiB
#include "rail.h" #include <bits/stdc++.h> using namespace std; using Node = array<int, 3>; int dist[5005][5005]; void findLocation(int N, int first, int location[], int stype[]) { stype[0] = 1; location[0] = first; for(int i=0; i<N; i++) for(int j=i+1; j<N; j++) dist[i][j] = dist[j][i] = getDistance(i, j); priority_queue<Node, vector<Node>, greater<Node> > pq; vector<bool> vis(N); vis[0] = 1; vector<int> D(N, 1e9); D[0] = 0; for(int i=1; i<N; i++) pq.push({ D[i] = dist[0][i], i, 0 }); while(!pq.empty()) { auto [d, a, b] = pq.top(); pq.pop(); if(vis[a]) continue; vis[a] = 1; stype[a] = 3 - stype[b]; location[a] = location[b] + (stype[b] == 1 ? dist[a][b] : -dist[a][b]); for(int c=0; c<N; c++) { if(vis[c]) continue; if(D[c] > dist[a][c]) pq.push({ D[c] = dist[a][c], c, a }); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...