Submission #70304232
Source Code Expand
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <deque>
#include <queue>
#include <numeric>
#include <stack>
#include <cassert>
#include <cstring>
#include <cmath>
#include <random>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <chrono>
#include <sstream>
#include <limits>
#include <functional>
using namespace std;
#define endl '\n'
// #define LOCAL
using int64 = int64_t;
using uint64 = unsigned long long;
using int128 = __int128_t;
#ifdef LOCAL
#include "src/debug.h"
#else
#define debug(...) 42
#endif
// tree diameter
const int INF = numeric_limits<int>::max();
int N;
vector<vector<int>> adj;
vector<int> bfs(int src) {
vector<int> dist(N, INF);
dist[src] = 0;
queue<int> q;
q.emplace(src);
while (!q.empty()) {
int u = q.front();
q.pop();
for (int v : adj[u]) {
if (dist[v] == INF) {
dist[v] = dist[u] + 1;
q.emplace(v);
}
}
}
return dist;
}
void solve() {
cin >> N;
adj.assign(N, vector<int>());
for (int i = 0; i < N - 1; i++) {
int u, v;
cin >> u >> v;
u--; v--;
adj[u].emplace_back(v);
adj[v].emplace_back(u);
}
// find farthest from node 0
vector<int> d0 = bfs(0);
int u = -1, maxd = -1; // handles tie break by taking larger node index
for (int i = N - 1; i >= 0; --i) {
if (d0[i] > maxd) {
maxd = d0[i];
u = i;
}
}
vector<int> du = bfs(u);
int v = -1, maxd2 = -1;
for (int i = N - 1; i >= 0; --i) {
if (du[i] > maxd2) {
maxd2 = du[i];
v = i;
}
}
vector<int> dv = bfs(v);
if (u < v) {
swap(u, v);
swap(du, dv);
}
// farthest distance from every node i
// u is taken on ties
for (int i = 0; i < N; ++i) {
if (du[i] >= dv[i]) {
cout << u + 1 << endl;
} else {
cout << v + 1 << endl;
}
}
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Farthest Vertex |
| User | therealchainman |
| Language | C++ 20 (gcc 12.2) |
| Score | 475 |
| Code Size | 2284 Byte |
| Status | AC |
| Exec Time | 188 ms |
| Memory | 40304 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 475 / 475 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 02_path_00.txt, 02_path_01.txt, 02_path_02.txt, 02_path_03.txt, 03_star_1_00.txt, 03_star_1_01.txt, 03_star_1_02.txt, 04_star_2_00.txt, 04_star_2_01.txt, 04_star_2_02.txt, 04_star_2_03.txt, 04_star_2_04.txt, 05_star_3_00.txt, 05_star_3_01.txt, 05_star_3_02.txt, 06_corner_00.txt, 06_corner_01.txt, 06_corner_02.txt, 06_corner_03.txt, 06_corner_04.txt, 06_corner_05.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3408 KiB |
| 00_sample_01.txt | AC | 1 ms | 3484 KiB |
| 01_random_00.txt | AC | 90 ms | 23488 KiB |
| 01_random_01.txt | AC | 162 ms | 38016 KiB |
| 01_random_02.txt | AC | 114 ms | 28116 KiB |
| 01_random_03.txt | AC | 168 ms | 38072 KiB |
| 01_random_04.txt | AC | 120 ms | 28824 KiB |
| 01_random_05.txt | AC | 164 ms | 37988 KiB |
| 01_random_06.txt | AC | 163 ms | 36948 KiB |
| 01_random_07.txt | AC | 165 ms | 38008 KiB |
| 02_path_00.txt | AC | 104 ms | 36268 KiB |
| 02_path_01.txt | AC | 181 ms | 37152 KiB |
| 02_path_02.txt | AC | 188 ms | 37180 KiB |
| 02_path_03.txt | AC | 182 ms | 37232 KiB |
| 03_star_1_00.txt | AC | 88 ms | 40304 KiB |
| 03_star_1_01.txt | AC | 95 ms | 40224 KiB |
| 03_star_1_02.txt | AC | 127 ms | 40284 KiB |
| 04_star_2_00.txt | AC | 119 ms | 37152 KiB |
| 04_star_2_01.txt | AC | 133 ms | 39292 KiB |
| 04_star_2_02.txt | AC | 149 ms | 37304 KiB |
| 04_star_2_03.txt | AC | 153 ms | 37232 KiB |
| 04_star_2_04.txt | AC | 160 ms | 37168 KiB |
| 05_star_3_00.txt | AC | 150 ms | 36676 KiB |
| 05_star_3_01.txt | AC | 154 ms | 37148 KiB |
| 05_star_3_02.txt | AC | 146 ms | 37108 KiB |
| 06_corner_00.txt | AC | 101 ms | 37204 KiB |
| 06_corner_01.txt | AC | 101 ms | 37132 KiB |
| 06_corner_02.txt | AC | 162 ms | 37232 KiB |
| 06_corner_03.txt | AC | 164 ms | 37200 KiB |
| 06_corner_04.txt | AC | 160 ms | 37048 KiB |
| 06_corner_05.txt | AC | 160 ms | 36824 KiB |