Submission #1161283

#TimeUsernameProblemLanguageResultExecution timeMemory
1161283The_SamuraiLongest Trip (IOI23_longesttrip)C++20
40 / 100
966 ms844 KiB
#include "longesttrip.h" #include "bits/stdc++.h" using namespace std; mt19937 rng(time(0)); int rand(int l, int r) { int x = rng(); x = abs(x); return x % (r - l + 1) + l; } vector<int> longest_trip(int n, int d) { vector can(n, vector(n, false)); vector<vector<int>> g(n); for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { bool p = are_connected({i}, {j}); if (!p) continue; can[i][j] = can[j][i] = p; g[i].emplace_back(j); g[j].emplace_back(i); // if (can[i][j]) cout << '\t' << i << ' ' << j << endl; } } vector<bool> vis(n); vector<int> way, ans; auto dfs = [&](auto &dfs, int u) -> void { way.emplace_back(u); if (ans.size() < way.size()) ans = way; vis[u] = true; for (int i = 1; i < g[u].size(); i++) swap(g[u][i], g[u][rand(0, i)]); for (int v: g[u]) { if (!vis[v]) dfs(dfs, v); } way.pop_back(); }; for (int t = 0; t < 1; t++) for (int i = 0; i < n; i++) { vis = vector(n, false); dfs(dfs, i); } return 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...