제출 #68053

#제출 시각아이디문제언어결과실행 시간메모리
68053KieranHorgan경주 (Race) (IOI11_race)C++17
21 / 100
3062 ms39084 KiB
#pragma GCC optimize("Ofast") #include "race.h" #include <bits/stdc++.h> using namespace std; vector<pair<pair<int, int>, int>> AdjList[200000]; bitset<400000> done[100]; int best_path(int N, int K, int H[][2], int L[]) { for(int i = 0; i+1 < N; i++) { AdjList[H[i][0]].push_back({{L[i], H[i][1]}, i*2 }); AdjList[H[i][1]].push_back({{L[i], H[i][0]}, i*2+1}); } queue<pair<pair<int, int>, pair<int, int>>> q; for(int i = 0; i < N; i++) q.push(make_pair(make_pair(i, -1), make_pair(0, 0))); int u, p, d, s; while(!q.empty()) { u = q.front().first.first; p = q.front().first.second; d = q.front().second.first; s = q.front().second.second; q.pop(); for(auto v: AdjList[u]) { if(v.first.second != p) { if(d+v.first.first > K) continue; if(d+v.first.first == K) return s+1; if(K <= 100) { if(done[d+v.first.first][v.second]) continue; done[d+v.first.first][v.second] = 1; } q.push(make_pair(make_pair(v.first.second, u), make_pair(d+v.first.first, s+1))); } } } return -1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...