Submission #762768

#TimeUsernameProblemLanguageResultExecution timeMemory
762768vjudge1Fun Tour (APIO20_fun)C++17
26 / 100
2079 ms20112 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "C:\GCC\debug.h" #else #define debug(...) void(42) #endif /* int hoursRequired(int X, int Y) { cout << X << " " << Y << endl; int p; cin >> p; return p; } */ int hoursRequired(int X, int Y); int attractionsBehind(int X, int Y); vector<int> createFunTour(int N, int Q) { int n = N; vector<vector<int>> adj(n); if (n <= 500) { for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (hoursRequired(i, j) == 1) { adj[i].push_back(j); adj[j].push_back(i); } } } } else { for (int i = 1; i < n; i++) { int x = i; int y = (i - 1) / 2; adj[x].push_back(y); adj[y].push_back(x); } } vector<bool> block(n); auto findFarthest = [&](int x) { vector<int> d(n, -1); d[x] = 0; queue<int> que; que.push(x); while (!que.empty()) { auto u = que.front(); que.pop(); for (auto v : adj[u]) { if (d[v] == -1 && !block[v]) { d[v] = d[u] + 1; que.push(v); } } } return max_element(d.begin(), d.end()) - d.begin(); }; int p = findFarthest(0); vector<int> perm; perm.push_back(p); block[p] = true; while ((int) perm.size() < n) { int nxt = findFarthest(p); block[nxt] = true; perm.push_back(nxt); swap(p, nxt); } return perm; } /* int main() { ios::sync_with_stdio(false); cin.tie(0); return 0; } */
#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...