Submission #1320457

#TimeUsernameProblemLanguageResultExecution timeMemory
1320457BigBadBully수천개의 섬 (IOI22_islands)C++20
1.75 / 100
84 ms12020 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); set<pii> seen; for(int i = 0; i < m; i++) { if(seen.count({u[i],v[i]}))continue; seen.insert({u[i],v[i]}); graph[u[i]].push_back({v[i],i}); } vector<int> vis(n,0); vector<int> res,cyc; function<int(int,int)> dfs = [&](int cur,int prev) { if(vis[cur]==1)return cur; vis[cur] = 1; for(pii a: graph[cur]) { if(a.ff==prev)continue; int val = dfs(a.ff,cur); if(val>=0) { cyc.push_back(val); res.push_back(a.ss); return cur; } } return -1; }; dfs(0,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...