Submission #1235686

#TimeUsernameProblemLanguageResultExecution timeMemory
1235686MuhammadSaramThousands Islands (IOI22_islands)C++20
0 / 100
1098 ms135720 KiB
#include "islands.h" #include <bits/stdc++.h> using namespace std; const int M = 1000; vector<int> nei[M],ans; map<pair<int,int>,int> ind; int vis[M], par[M]; void dfs(int u) { vis[u]=1; if (ans.size()) return; for (int i:nei[u]) if (!vis[i]) par[i]=u,dfs(i); else if(vis[i]==1) { int v=u; while (v) ans.push_back(ind[{par[v],v}]),v=par[v]; reverse(ans.begin(),ans.end()); ans.push_back(ind[{u,i}]); int m=ans.size(); for (int o=0;o<m;o++) { if (ans[o]==ind[{par[i],i}]) { for (int j=o+1;j<m;j++) ans.push_back(ans[j]+1); for (int j=m-1;j>o;j--) ans.push_back(ans[j]); for (int j=m-1;j>o;j--) ans.push_back(ans[j]+1); for (int j=o;j>=0;j--) ans.push_back(ans[j]); break; } } break; } vis[u]=2; } variant<bool, vector<int>> find_journey(int n, int m, vector<int> U, vector<int> V) { for (int i=0;i<m;i+=2) nei[U[i]].push_back(V[i]),ind[{U[i],V[i]}]=i; dfs(0); if (ans.size()) return ans; return false; }
#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...