제출 #1018686

#제출 시각아이디문제언어결과실행 시간메모리
1018686amirhoseinfar1385도시들 (IOI15_towns)C++17
0 / 100
13 ms1216 KiB
#include "towns.h" #include<bits/stdc++.h> using namespace std; int n,inf=1e9; map<pair<int,int>,int>mp; int pors(int u,int v){ if(u>v){ swap(u,v); } if(mp.count(make_pair(u,v))==0){ mp[make_pair(u,v)]=getDistance(u,v); } return mp[make_pair(u,v)]; } pair<int,int>getdia(){ vector<pair<int,int>>allv; for(int i=1;i<n;i++){ allv.push_back(make_pair(pors(0,i),i)); } sort(allv.begin(),allv.end()); int u=allv.back().second; allv.clear(); for(int i=0;i<n;i++){ if(i==u){ continue; } allv.push_back(make_pair(pors(u,i),i)); } sort(allv.begin(),allv.end()); int v=allv.back().second; return make_pair(u,v); } int hubDistance(int N, int sub) { n=N; sub=sub; pair<int,int>di=getdia(); int mn=inf; cout<<di.first<<" "<<di.second<<endl; for(int i=0;i<n;i++){ if(i!=di.first&&i!=di.second){ mn=min(mn,max(pors(di.first,i)+pors(di.first,di.second)-pors(i,di.second),pors(di.second,i)+pors(di.second,di.first)-pors(i,di.first))/2); // if(i==0){ // cout<<pors(di.first,i)+pors(di.first,di.second)-pors(i,di.second)<<" "<<pors(di.second,i)+pors(di.second,di.first)-pors(i,di.first)<<"\n"; // } } } cout<<mn<<endl; return mn; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...