Submission #825744

#TimeUsernameProblemLanguageResultExecution timeMemory
825744ttamxThousands Islands (IOI22_islands)C++17
24 / 100
30 ms7172 KiB
#include "islands.h" #include<bits/stdc++.h> using namespace std; const int N=1e5+5; const int M=2e5+5; int n,m; vector<pair<int,int>> adj[N]; vector<int> path; bool vis[N],vis2[N]; int dfs(int u){ if(vis2[u])return u; if(vis[u])return -1; vis[u]=vis2[u]=true; for(auto [v,id]:adj[u]){ path.emplace_back(id); int res=dfs(v); if(res!=-1)return res; path.pop_back(); } vis2[u]=false; return -1; } variant<bool, vector<int>> find_journey(int N,int M,vector<int> U,vector<int> V){ n=N,m=M; for(int i=0;i<m;i+=2)adj[U[i]].emplace_back(V[i],i); int res=dfs(0); if(res==-1)return false; auto ans=path; vector<int> path2; stack<int> rev; int cur=0; bool ok=false; for(auto i:path){ if(cur==res)ok=true; if(!ok){ rev.emplace(i); }else{ path2.emplace_back(i); } cur=V[i]; } for(auto i:path2){ ans.emplace_back(i+1); } reverse(path2.begin(),path2.end()); for(auto i:path2){ ans.emplace_back(i); } for(auto i:path2){ ans.emplace_back(i+1); } while(!rev.empty()){ ans.emplace_back(rev.top()); rev.pop(); } return ans; }
#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...