#include "towns.h"
#include <bits/stdc++.h>
#define REP(v, i, j) for (int v = i; v != j; v++)
#define FORI(v) for (auto i : v)
#define FORJ(v) for (auto j : v)
#define OUT(v, a) \
FORI(v) \
cout << i << a;
#define OUTS(v, a, b) \
cout << v.size() << a; \
OUT(v, b)
#define in(a, n) \
REP(i, 0, n) \
cin >> a[i];
#define SORT(v) sort(begin(v), end(v))
#define REV(v) reverse(begin(v), end(v))
#define MEMSET(m) memset(m, -1, sizeof m)
#define pb push_back
#define fi first
#define se second
#define detachIO \
ios_base::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std;
int cache[200][200];
int query(int x, int y){
if(cache[x][y]!=-1)return cache[x][y];
; return cache[x][y]=cache[y][x]=getDistance(x,y);
}
int hubDistance(int N, int sub) {
MEMSET(cache);
int f = 1;
int d=query(0,f);
REP(i,2,N){
int t=query(0,i);
if(t>d)f=i,d=t;
}
int g = 0;
d=query(g,f);
REP(i,1,N){
if(i==f)continue;
int t=query(f,i);
if(t>d)g=i,d=t;
}
int ans=query(f,g);
// cerr<<f<<" - "<<g<<endl;
REP(i,0,N){
int off = (query(i,f) + query(i,g) - query(g,f)) / 2;
// cerr<<query(i,f)<<" "<<query(i,g)<<" "<<query(g,f)<<" "<<off<<" -> "<<max(query(i,f),query(i,g))-off<<endl;
ans=min(ans,max(query(i,f),query(i,g))-off);
}
// cerr<<"ANS: "<<ans<<endl;
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |