제출 #587886

#제출 시각아이디문제언어결과실행 시간메모리
587886MrDeboo꿈 (IOI13_dreaming)C++17
22 / 100
1074 ms7368 KiB
#include "dreaming.h" #include <bits/stdc++.h> using namespace std; int travelTime(int n, int m, int l, int a[], int b[], int t[]){ vector<pair<int,int>>vct[n]; for(int i=0;i<m;i++){ vct[a[i]].push_back({b[i],t[i]}); vct[b[i]].push_back({a[i],t[i]}); } int ans=0; deque<int>v; vector<int>vis(n); for(int i=0;i<n;i++){ if(vis[i])continue; vis[i]=1; vector<int>vc={i}; { deque<int>dq={i}; while(dq.size()){ int a=dq.front(); dq.pop_front(); for(auto &w:vct[a]){ if(!vis[w.first]){ vis[w.first]=1; dq.push_back(w.first); vc.push_back(w.first); } } } } int f=INT_MAX,ff=0; for(auto &w:vc){ vector<bool>vv(n); priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>dq; dq.push({w,0}); int g=0; while(dq.size()){ int a=dq.top().first,b=dq.top().second; dq.pop(); if(vv[a])continue; vv[a]=1; g=max(g,b); for(auto &j:vct[a]){ if(!vv[j.first]){ dq.push({j.first,j.second+b}); } } } ff=max(ff,g); f=min(f,g); } ans=max(ans,ff); v.push_back(f); } while(v.size()>1){ sort(v.begin(),v.end()); ans=max(ans,v.back()+v[0]+l); v.back()=max(v.back(),v[0]+l); v.pop_front(); } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...