Submission #1320453

#TimeUsernameProblemLanguageResultExecution timeMemory
1320453BigBadBullyThousands Islands (IOI22_islands)C++20
8.40 / 100
22 ms6064 KiB
#include "islands.h" #include <bits/stdc++.h> #define pii pair<int,int> #define ff first #define ss second using namespace std; variant<bool, vector<int>> find_journey( int n, int m, vector<int> u, vector<int> v) { vector<vector<pii>> graph(n); for(int i = 0; i < m; i++) graph[u[i]].push_back({v[i],i}); vector<int> vis(n,0); vector<int> res,cyc; function<int(int)> dfs = [&](int cur) { if(vis[cur]==2)return -1; if(vis[cur]==1)return cur; vis[cur] = 1; for(pii a: graph[cur]) { int val = dfs(a.ff); if(val>=0) { cyc.push_back(val); res.push_back(a.ss); return cur; } } vis[cur] = 2; return -1; }; dfs(0); cyc.push_back(0); if(cyc.size()==1) return false; reverse(res.begin(),res.end()); reverse(cyc.begin(),cyc.end()); int k = res.size(); int r =0; while(cyc[r] != cyc.back())r++; vector<int> ans; for(int i = 0; i < r;i++) ans.push_back(res[i]); for(int i = r; i < k; i++) ans.push_back(res[i]); ans.push_back(res[r]^1); ans.push_back(res[r]); for(int i = k-1; i > r; i--) ans.push_back(res[i]); ans.push_back(res[r]^1); for(int i = r-1; i >= 0;i--) ans.push_back(res[i]); vector<int> dumy = {0,0}; return dumy; }
#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...