Submission #741648

#TimeUsernameProblemLanguageResultExecution timeMemory
741648vjudge1꿈 (IOI13_dreaming)C++17
47 / 100
98 ms17176 KiB
#include "dreaming.h" #include<bits/stdc++.h> using namespace std; vector<vector<pair<int, int> > > ng; vector<int> dis; vector<int> par; int dfs(int ind, int pr = -1, int cds = 0) { par[ind] = pr; if (pr == -1)dis[ind] = 0; else dis[ind] = cds; int ret = ind; for (int i = 0; i < ng[ind].size(); i++) { int neg = ng[ind][i].first; int ds = ng[ind][i].second; if (neg == par[ind])continue; int gt = dfs(neg, ind, ds + cds); if (dis[gt] > dis[ret]) ret = gt; } return ret; } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { priority_queue<pair<int, int> > pq; ng.resize(N); for (int i = 0; i < M; i++) { ng[A[i]].push_back(make_pair(B[i], T[i])); ng[B[i]].push_back(make_pair(A[i], T[i])); } dis.resize(N, 0); par.resize(N, -2); int rez = 0; vector<int> vals; for (int i = 0; i < N; i++) { if (par[i] != -2) continue; int far = dfs(i); int it = far = dfs(far); int ind = it, v2 = dis[far]; while (par[it] != -1) { int v1 = max(dis[far] - dis[it], dis[it]); if (v1 < v2) { v2 = v1; ind = it; } it = par[it]; } rez = max(rez, dis[far]); vals.push_back(v2); } sort(vals.begin(), vals.end()); reverse(vals.begin(), vals.end()); rez = max(rez, vals[0] + vals[1] + L); if (vals.size() > 2) rez = max(rez, vals[1] + vals[2] + L + L); return rez; }

Compilation message (stderr)

dreaming.cpp: In function 'int dfs(int, int, int)':
dreaming.cpp:12:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   12 |     for (int i = 0; i < ng[ind].size(); i++) {
      |                     ~~^~~~~~~~~~~~~~~~
dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:36:13: warning: variable 'ind' set but not used [-Wunused-but-set-variable]
   36 |         int ind = it, v2 = dis[far];
      |             ^~~
#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...