제출 #1074476

#제출 시각아이디문제언어결과실행 시간메모리
1074476TB_통행료 (IOI18_highway)C++17
0 / 100
185 ms1748 KiB
#include <bits/stdc++.h> #include "highway.h" using namespace std; #define ll long long #define fo(i, n) for(ll i = 0; i<(n); i++) #define pb push_back #define F first #define S second #define deb(x) cout << #x << " = " << (x) << endl #define deb2(x, y) cout << #x << " = " << (x) << ", " << #y << " = " << (y) << endl typedef vector<ll> vl; typedef vector<vl> vvl; void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B) { int M = U.size(); vl invalid(N, 0); for (int j = 0; j < 50; ++j) { std::vector<int> w(M); for (int i = 0; i < M; ++i) { w[i] = rand()%2; } long long toll = ask(w); priority_queue<pair<ll, ll>> pq; pq.push({0, 0}); vl seen(N, 0); ll cost, pos; vector<vector<pair<ll, ll>>> adj(N); fo(i, M){ adj[U[i]].pb({V[i], w[i]}); adj[V[i]].pb({U[i], w[i]}); } while(!pq.empty()){ tie(cost, pos) = pq.top(); pq.pop(); cost = -cost; if(seen[pos]) continue; invalid[pos]|=cost!=toll; seen[pos] = 1; for(auto &[v, w] : adj[pos]){ pq.push({-cost-w, v}); } } } int ans = 0; fo(i, N) if(!invalid[i]) ans = i; answer(0, ans); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...