Submission #1235730

#TimeUsernameProblemLanguageResultExecution timeMemory
1235730Ghulam_Junaid수천개의 섬 (IOI22_islands)C++20
22.75 / 100
20 ms9608 KiB
#include <bits/stdc++.h> #include "islands.h" // #include "grader.cpp" using namespace std; const int N = 2e5 + 10; int n, m, vis[N]; vector<int> g[N], V; bool res[N]; vector<int> ans; vector<int> path; void get(int v){ if (ans.size()) return ; if (g[v].size() >= 3 or (v == 0 and g[v].size() >= 2)){ res[0] = 1; int prv = -1; if (path.size()) prv = path.back(); int e1 = -1, e2 = -1; if (prv == -1){ for (int e : g[v]){ if (e1 == -1) e1 = e; else e2 = e; } } else{ for (int e : g[v]){ if (e == prv) continue; if (e == (prv ^ 1)) continue; if (e1 == -1) e1 = e; else e2 = e; } } ans = path; ans.push_back(e1); ans.push_back(e1 ^ 1); ans.push_back(e2); ans.push_back(e2 ^ 1); ans.push_back(e1 ^ 1); ans.push_back(e1); ans.push_back(e2 ^ 1); ans.push_back(e2); while (path.size()){ ans.push_back(path.back()); path.pop_back(); } return ; } vis[v] = 1; for (int e : g[v]){ int u = V[e]; if (!vis[u]){ path.push_back(e); if (ans.size()) return ; get(u); if (ans.size()) return ; path.pop_back(); } } } variant<bool, vector<int>> find_journey(int N, int M, vector<int> U, vector<int> vv) { V = vv; n = N, m = M; for (int i = 0; i < m; i ++){ g[U[i]].push_back(i); } get(0); if (!res[0]) return false; else 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...