제출 #836548

#제출 시각아이디문제언어결과실행 시간메모리
836548LiudasCity Mapping (NOI18_citymapping)C++17
0 / 100
1 ms468 KiB
#include "citymapping.h" #include <bits/stdc++.h> using namespace std; void find_roads(int N, int Q, int A[], int B[], int W[]) { vector<pair<long long, long long>> tree; vector<long long> init(N+5); int p = 0; for(int i = 1; i < N; i ++){ tree.push_back({get_distance(1, i+1), i+1}); init[i+1] = tree.back().first; } sort(tree.begin(), tree.end()); vector<int> picks(N+20); set<long long> ends; for(auto [j, i] : tree){ int picked = false; for(auto r : ends){ long long t = get_distance(r, i); if(init[i] == init[r] + t){ picked = true; A[p] = i; B[p] = r; W[p++] = t; picks[r]++; ends.insert(i); if(picks[r] == 2){ ends.erase(r); } break; } } if(!picked){ ends.insert(i); A[p] = 1; B[p] = i; W[p++] = init[i]; } } return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...