제출 #1021443

#제출 시각아이디문제언어결과실행 시간메모리
1021443fv3통행료 (IOI18_highway)C++14
0 / 100
215 ms262144 KiB
#include <bits/stdc++.h> #include "highway.h" using namespace std; typedef long long ll; vector<vector<pair<int, int>>> adj; vector<int> city; vector<pair<int, int>> dist; vector<pair<int, int>> pt; void DFS2(int index, int last, int d, int target) { d++; for (auto node : adj[index]) { if (node.first == last) continue; if (d == target) pt.push_back({node.second, node.first}); else DFS2(node.first, index, d, target); } } void dist_DFS(int index, int last, int d) { for (auto node : adj[index]) { if (node.first == last) continue; city[node.second] = node.first; dist.push_back({d, node.second}); dist_DFS(node.first, index, d+1); } } void find_pair(int N, vector<int> U, vector<int> V, int A, int B) { const int M = U.size(); adj = vector<vector<pair<int, int>>>(N); for (int i = 0; i < M; i++) { adj[U[i]].push_back({V[i], i}); adj[V[i]].push_back({U[i], i}); } city.resize(M); dist_DFS(0, 0, 0); sort(dist.begin(), dist.end()); ll dst = ask(vector<int>(M)); cerr << "Dist: " << dst << '\n'; // Find placement of A or B in the graph int l = 0, r = M - 1; while (l < r) { vector<int> w(M); int c = (l + r + 1) / 2; for (int i = c; i < M; i++) w[dist[i].second] = 1; if (ask(w) == dst) r = c - 1; else l = c; } int S = city[dist[l].second]; cerr << "S: " << S << ' '; DFS2(S, S, 0, dst); l = 0; r = pt.size() - 1; while (l < r) { vector<int> w(M); int c = (l + r + 1) / 2; for (int i = c; i < pt.size(); i++) w[pt[i].first] = 1; if (ask(w) == dst) r = c - 1; else l = c; } int T = pt[l].second; cerr << "T: " << T << '\n'; answer(S, T); }

컴파일 시 표준 에러 (stderr) 메시지

highway.cpp: In function 'void find_pair(int, std::vector<int>, std::vector<int>, int, int)':
highway.cpp:84:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |   for (int i = c; i < pt.size(); i++)
      |                   ~~^~~~~~~~~~~
#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...