Submission #1304675

#TimeUsernameProblemLanguageResultExecution timeMemory
1304675vtnoo즐거운 행로 (APIO20_fun)C++20
26 / 100
8 ms1604 KiB
#include "fun.h" #include <bits/stdc++.h> #define pb push_back #define fst first #define snd second #define fore(i,a,b) for(int i=a,pao=b;i<pao;++i) #define SZ(x) ((int)x.size()) #define ALL(x) x.begin(),x.end() #define mset(a,v) memset((a),(v),sizeof(a)) #define FIN ios::sync_with_stdio(0);cin.tie(0);cout.tie(0) using namespace std; typedef long long ll; const int MAXN=505; int d[MAXN][MAXN]; int getDist(int a,int b){ if(d[a][b]!=-1)return d[a][b]; else return d[a][b]=d[b][a]=hoursRequired(a,b); } std::vector<int> createFunTour(int N, int Q) { mset(d,-1); vector<bool>already(N,false); fore(i,0,N)d[i][i]=0; fore(i,1,N){ d[0][i]=getDist(0,i); } pair<int,int>a={-1,0}; fore(i,1,N){ a=max(a,{d[0][i],i}); } fore(i,0,N){ if(i!=a.snd){ d[a.snd][i]=getDist(a.snd,i); } } pair<int,int>b={-1,0}; fore(i,0,N){ b=max(b,{d[a.snd][i],i}); } vector<int>p; p.pb(a.snd);p.pb(b.snd); already[p[0]]=already[p[1]]=true; while(SZ(p)<N){ pair<int,int>c={-1,0}; fore(i,0,N){ if(!already[i]){ c=max(c,{getDist(p.back(),i),i}); } } p.pb(c.snd); already[c.snd]=true; } return p; }
#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...