이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |