Submission #1014313

#TimeUsernameProblemLanguageResultExecution timeMemory
1014313JakobZorzLongest Trip (IOI23_longesttrip)C++17
60 / 100
228 ms848 KiB
#include"longesttrip.h" #include<iostream> using namespace std; int n; pair<int,int>find_conn(vector<int>v1,vector<int>v2){ for(int i:v1){ if(are_connected({i},v2)){ for(int j:v2){ if(are_connected({i},{j})) return{i,j}; } } } // impossible exit(1); } vector<int>longest_trip(int N,int D){ n=N; vector<int>res={0}; vector<bool>vis(n); vis[0]=true; while(true){ int node=res.back(); //cout<<"VIS "<<node<<"\n"; for(int ne=0;ne<n;ne++){ if(!vis[ne]&&are_connected({node},{ne})){ res.push_back(ne); break; } } vis[res.back()]=true; if(node==res.back()) break; } vector<int>res2; for(int j=0;j<n;j++) if(!vis[j]) res2.push_back(j); // all unvisited are strongly connected if(res2.size()&&are_connected(res,res2)){ pair<int,int>conn=find_conn(res,res2); int i=0; while(res[i]!=conn.first) i++; int ne=conn.second; vector<int>res2; for(int j=0;j<n;j++) if(!vis[j]&&j!=ne) res2.push_back(j); res2.push_back(ne); for(int j=i;j<(int)res.size();j++) res2.push_back(res[j]); for(int j=0;j<i;j++) res2.push_back(res[j]); return res2; } if(res.size()>res2.size()){ return res; }else{ return res2; } }
#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...