제출 #420490

#제출 시각아이디문제언어결과실행 시간메모리
420490dxz05Dreaming (IOI13_dreaming)C++14
100 / 100
189 ms19016 KiB
#include "dreaming.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 2e5 + 3e2; vector<pair<int, int>> g[MAXN]; int d[MAXN]; vector<int> comp; bool visited[MAXN]; void dfs(int v, int p, int dist){ visited[v] = true; d[v] = dist; comp.push_back(v); for (auto edge : g[v]){ int u = edge.first, w = edge.second; if (u != p) dfs(u, v, dist + w); } } int dA[MAXN], dB[MAXN]; pair<int, int> get_diameter(int v){ comp.clear(); dfs(v, -1, 0); int A = v; for (int x : comp){ if (d[x] > d[A]) A = x; } comp.clear(); dfs(A, -1, 0); int B = v; for (int x : comp){ if (d[x] > d[B]) B = x; dA[x] = d[x]; } comp.clear(); dfs(B, -1, 0); for (int x : comp){ dB[x] = d[x]; if (max(dA[x], dB[x]) < max(dA[v], dB[v])) v = x; } return make_pair(max(dA[v], dB[v]), v); } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { for (int i = 0; i < M; i++){ g[A[i]].emplace_back(B[i], T[i]); g[B[i]].emplace_back(A[i], T[i]); } vector<pair<int, int>> diameters; for (int i = 0; i < N; i++){ if (!visited[i]){ diameters.push_back(get_diameter(i)); } } sort(diameters.begin(), diameters.end()); for (int i = 0; i < diameters.size() - 1; i++){ int x = diameters[i].second, y = diameters.back().second; g[x].emplace_back(y, L); g[y].emplace_back(x, L); } int x = get_diameter(0).second; return dA[x] + dB[x]; }

컴파일 시 표준 에러 (stderr) 메시지

dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:71: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]
   71 |     for (int i = 0; i < diameters.size() - 1; i++){
      |                     ~~^~~~~~~~~~~~~~~~~~~~~~
#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...