Submission #1034617

#TimeUsernameProblemLanguageResultExecution timeMemory
1034617Mr_HusanboyThousands Islands (IOI22_islands)C++17
5 / 100
21 ms4816 KiB
#include "islands.h" #include <variant> #include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define all(a) (a).begin(), (a).end() #define ll long long const int mod = 1000002022; vector<int> state, p; int n, m; vector<vector<int>> g; template<typename T> int len(T &a){return a.size();} mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); variant<bool, vector<int>> find_journey( int n, int m, std::vector<int> u, std::vector<int> v) { vector<vector<int>> g(n); for(int i = 0; i < m; i ++) g[u[i]].push_back(i); if(len(g[0]) == 0) return false; if(n == 2){ if(len(g[0]) <= 1) return false; if(len(g[1]) == 0) return false; return vector {g[0][0], g[1][0], g[0][1], g[0][0], g[1][0], g[0][1]}; } if(len(g[0]) == 2){ int a = g[0][0], b = g[0][1]; return vector{a, a ^ 1, b, b ^ 1, a ^ 1, a, b ^ 1, b}; } vector<int> ans = {g[0][0]}; vector<int> vis(n); vis[0] = 1; int cnt = 0; while(true){ int cur = v[ans.back()]; if(vis[cur]) assert(cnt <= 2); cnt ++; vis[cur] = 1; if(len(g[cur]) <= 1){ return false; } if(len(g[cur]) == 3) return true; if(g[cur][0] == (ans.back() ^ 1)){ ans.push_back(g[cur][1]); }else ans.push_back(g[cur][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...