Submission #1034664

#TimeUsernameProblemLanguageResultExecution timeMemory
1034664Mr_HusanboyThousands Islands (IOI22_islands)C++17
24 / 100
28 ms4956 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; vector<int> ans; vector<int> vis(n); vector<int> cyc; vector<int> par(n); auto dfs = [&](auto &dfs, int i)->bool{ vis[i] = 1; for(auto j : g[i]){ if(j % 2) continue; int x = v[j]; if(vis[x] == 2) continue; if(vis[x] == 1){ cyc.push_back(j); int cur = i; while(cur != x){ cyc.push_back(par[cur]); cur = u[par[cur]]; } return true; } par[x] = j; if(dfs(dfs, x)){ return true; } } vis[i] = 2; return false; }; if(!dfs(dfs, 0)){ return false; } int j = u[cyc.back()]; //cout << j << endl; while(j != 0){ ans.push_back(par[j]); j = u[par[j]]; } reverse(all(ans)); reverse(all(cyc)); vector<int> res; for(auto i : ans) res.push_back(i); for(auto i : cyc) res.push_back(i); for(auto i : cyc) res.push_back(i ^ 1); reverse(all(cyc)); for(auto i : cyc) res.push_back(i); for(auto i : cyc) res.push_back(i ^ 1); reverse(all(ans)); for(auto i : ans) res.push_back(i); return res; }
#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...