Submission #1202136

#TimeUsernameProblemLanguageResultExecution timeMemory
1202136ackhava즐거운 행로 (APIO20_fun)C++20
26 / 100
56 ms23108 KiB
#include "fun.h" #include <bits/stdc++.h> #define fi first #define se second #define pb push_back #define all(v) begin(v), end(v) #define REP(i,o,n) for(int i=o;i<n;i++) using namespace std; set<int> adj[200100]; pair<int,int> furthest(int node, int origin, int dst){ pair<int,int> ans={dst,node}; for(auto i:adj[node]){ if(i!=origin)ans=max(ans,furthest(i,node,dst+1)); } return ans; } std::vector<int> createFunTour(int N, int Q) { REP(i,0,N)REP(j,i+1,N){ if(hoursRequired(i,j)==1)adj[j].insert(i),adj[i].insert(j); } int cur=furthest(1,-1,0).se; vector<int> ans;ans.pb(cur); vector<int> dst; REP(i,1,N){ auto nxt=furthest(cur,-1,0); dst.pb(nxt.fi); for(auto i:adj[cur])adj[i].erase(cur); adj[cur].clear(); cur=nxt.se; ans.pb(cur); } // cerr<<"! "; // for(auto i:ans)cerr<<i<<" "; // cerr<<endl; // cerr<<"!> "; // for(auto i:dst)cerr<<i<<" "; // cerr<<endl; if(dst.size()>=2){ REP(i,0,dst.size()-1){ assert(dst[i+1]<=dst[i]); } } 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...