Submission #305744

#TimeUsernameProblemLanguageResultExecution timeMemory
305744sofapudenDreaming (IOI13_dreaming)C++14
0 / 100
61 ms15092 KiB
#include "dreaming.h" #include <bits/stdc++.h> using namespace std; vector<vector<pair<int,int>>> gri; vector<int> dis = {0,0,0}; vector<int> dep; vector<int> used; int jic = 0; int y; int dfs(int x, int p){ used[x] = 1; int s = 0; for(int i = 0; i < (int)gri[x].size(); ++i){ int z = 0; if(gri[x][i].first != p)z = dfs(gri[x][i].first,x)+gri[x][i].second; dep.push_back(z); s+=z; } return s; } void find(int ind){ if(!gri[ind].size()){dis.push_back(0);return;} dep.clear(); y = dfs(ind,ind); jic = max(jic,y); int best = INT_MAX; for(int i = 0; i < (int)dep.size(); ++i){ best = min(best, max(y-dep[i],dep[i])); } dis.push_back(best); } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { used.resize(N,0); gri.resize(N); for(int i = 0; i < M; ++i){ gri[A[i]].push_back({B[i],T[i]}); gri[B[i]].push_back({A[i],T[i]}); } for(int i = 0; i < N; ++i){ if(!used[i] && gri[i].size() == 1){ find(i); } } sort(dis.rbegin(),dis.rend()); return max(jic,max(dis[0]+L+dis[1],dis[1]+2*L+dis[2])); }
#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...