Submission #1173663

#TimeUsernameProblemLanguageResultExecution timeMemory
1173663SpyrosAlivThousands Islands (IOI22_islands)C++20
10 / 100
22 ms7140 KiB
#include <bits/stdc++.h> using namespace std; int n, m; vector<int> u, v; vector<vector<int>> av; bool cycle; vector<bool> vis; void dfs(int node, int par) { if (cycle) return; vis[node] = true; vector<int> targs; for (int i = 1; i < (int)av[node].size(); i++) { targs.push_back(v[av[node][i]]); } sort(targs.begin(), targs.end()); int s = targs.size(); for (int i = 1; i < s; i++) { if (targs[i] == targs[i-1]) { cycle = true; return; } } for (int i = 0; i < s; i++) { if (targs[i] == par) continue; if (vis[targs[i]]) { cycle = true; return; } } for (int i = 0; i < s; i++) { if (targs[i] != par) { dfs(targs[i], node); if (cycle) return; } } } variant<bool, vector<int>> find_journey(int N, int M, vector<int> U, vector<int> V) { // tree -> impossible n = N; m = M; u = U; v = V; av.clear(); av.resize(n); vis.assign(n, false); for (int i = 0; i < m; i++) { av[u[i]].push_back(i); } cycle = false; dfs(0, -1); if (n == 2) { int cnt1 = 0, cnt2 = 0; vector<int> a, b; for (int i = 0; i < m; i++) { if (u[i] == 0) { cnt1++; a.push_back(i); } else { cnt2++; b.push_back(i); } } if (cnt1 < 2 || cnt2 < 1) return false; vector<int> ans = {a[0], b[0], a[1], a[0], b[0], a[1]}; return ans; } else { vector<int> goB, goC, b, c; for (int i = 0; i < m; i++) { if (u[i] == 0) { if (v[i] == 1) goB.push_back(i); else if (v[i] == 2) goC.push_back(i); } else if (u[i] == 1 && v[i] == 0) b.push_back(i); else if (u[i] == 2 && v[i] == 0) c.push_back(i); } if (goB.size() && goC.size() && b.size() && c.size()) { vector<int> ans = {goB[0], b[0], goC[0], c[0], b[0], goB[0], c[0], goC[0]}; return ans; } } if (!cycle) return false; else return true; }
#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...