Submission #633112

#TimeUsernameProblemLanguageResultExecution timeMemory
633112tutisThousands Islands (IOI22_islands)C++17
17.35 / 100
31 ms4416 KiB
#include "islands.h" #include <variant> #include <vector> #include <bits/stdc++.h> using namespace std; variant<bool, vector<int>> find_journey( int N, int M, vector<int> U, vector<int> V) { if (N == 2) { vector<int>a; vector<int>b; for (int i = 0; i < M; i++) if (U[i] == 0 && V[i] == 1) a.push_back(i); else b.push_back(i); if (a.size() >= 2 && b.size() >= 1) return vector<int>({a[0], b[0], a[1], a[0], b[0], a[1]}); return false; } { int x = -1; int y = -1; int z = -1; int t = -1; for (int i = 0; i < M; i++) if (U[i] == 0 && V[i] == 1) x = i; else if (U[i] == 1 && V[i] == 0) y = i; else if (U[i] == 0 && V[i] == 2) z = i; else if (U[i] == 2 && V[i] == 0) t = i; if (min({x, y, z, t}) >= 0) return vector<int>({x, y, z, t, y, x, t, z}); } { vector<pair<int, int>>adj[N]; for (int i = 0; i + 1 < M; i += 2) if (V[i + 1] == U[i] && V[i] == U[i + 1]) { adj[U[i]].push_back({V[i], i}); adj[V[i]].push_back({U[i], i + 1}); } vector<bool> vis(N, false); vector<int>c; vector<int>xx; function<void(int)>dfs = [&](int i)->void { if (vis[i]) return; vis[i] = true; vector<int>V; for (pair<int, int> jj : adj[i]) { int j = jj.first; if (vis[j] == false) V.push_back(jj.second); } if (V.size() >= 2) { c = xx; c.push_back(V[0]); c.push_back(V[0] ^ 1); c.push_back(V[1]); c.push_back(V[1] ^ 1); c.push_back(V[0] ^ 1); c.push_back(V[0]); c.push_back(V[1] ^ 1); c.push_back(V[1]); } else for (pair<int, int> jj : adj[i]) { int j = jj.first; if (vis[j] == false) { xx.push_back(jj.second); dfs(j); xx.pop_back(); if (!c.empty()) return; } } }; dfs(0); if (!c.empty()) return c; } return false; }
#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...