提出 #70261263
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#if __has_include(<atcoder/all>)
#include <atcoder/all>
using namespace atcoder;
#endif
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define fix(x) fixed << setprecision(x)
#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)
#define repe(i, start, end) for (auto i = (start); (i) <= (end); (i)++)
#define rrep(i, start, end) for (auto i = (start); (i) >= (end); (i)--)
constexpr auto PI = 3.14159265358979;
constexpr int INF = 1e+9;
constexpr long long INFL = 1e+18;
using ll = long long;
using lld = long double;
// using mint = modint1000000007;
using mint = modint998244353;
using Pair_int = pair<int, int>;
using Pair_ll = pair<ll, ll>;
template <class T>
using Graph = vector<vector<T>>;
template <class T1, class T2>
inline auto div_floor(T1 a, T2 b)
{
if (b < 0)
a *= -1, b *= -1;
if (a >= 0)
return a / b;
else
return (a + 1) / b - 1;
}
template <class T1, class T2>
inline auto div_ceil(T1 a, T2 b)
{
if (b < 0)
a *= -1, b *= -1;
if (a <= 0)
return a / b;
else
return (a - 1) / b + 1;
}
ll pow_int(ll x, ll n)
{
ll res = 1;
while (n > 0)
{
if (n & 1)
res *= x;
x *= x;
n >>= 1;
}
return res;
}
ll pow_mod(ll x, ll n, ll mod)
{
ll res = 1;
while (n > 0)
{
if (n & 1)
res = res * x % mod;
x = x * x % mod;
n >>= 1;
}
return res;
}
ll gcd(ll x, ll y)
{
if (x < y)
swap(x, y);
ll r;
while (y > 0)
{
r = x % y;
x = y;
y = r;
}
return x;
}
ll lcm(ll x, ll y) { return ll(x / gcd(x, y)) * y; }
ll nCk(ll n, ll r)
{
if (r < 0 || n < r)
return 0;
ll ans = 1;
for (ll i = 1; i <= r; i++)
{
ans *= n--;
ans /= i;
}
return ans;
}
int get_rand(int seed, int min, int max)
{
static mt19937_64 mt64(seed);
uniform_int_distribution<int> get_rand_int(min, max);
return get_rand_int(mt64);
}
template <typename T>
inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); }
template <typename T>
inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); }
template <class T1, class T2>
inline auto mod(T1 x, T2 r) { return (x % r + r) % r; }
// ======================================== //
int main()
{
int N;
cin >> N;
Graph<int> G(N);
rep(i, 0, N - 1)
{
int A, B;
cin >> A >> B;
A--, B--;
G[A].push_back(B);
G[B].push_back(A);
}
auto get_dist = [&](int start) -> vector<int>
{
vector<int> res(N, -1);
auto dfs = [&](auto &self, int now, int parent, int d) -> void
{
res[now] = d;
for (auto next : G[now])
{
if (next == parent)
continue;
self(self, next, now, d + 1);
}
return;
};
dfs(dfs, start, -1, 0);
return res;
};
auto get_farthest = [&](const vector<int> &dist) -> int
{
int res = -1;
int max_dist = -1;
rep(i, 0, N)
{
if (dist[i] > max_dist)
{
res = i;
max_dist = dist[i];
}
else if (dist[i] == max_dist)
{
chmax(res, i);
}
}
return res;
};
vector<int> dist_0 = get_dist(0);
int u = get_farthest(dist_0);
vector<int> dist_u = get_dist(u);
int w = get_farthest(dist_u);
vector<int> dist_w = get_dist(w);
rep(v, 0, N)
{
int from_u = dist_u[v];
int from_w = dist_w[v];
if (from_u == from_w)
{
cout << max(u, w) + 1 << endl;
}
else if (from_u < from_w)
{
cout << w + 1 << endl;
}
else
{
cout << u + 1 << endl;
}
}
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
E - Farthest Vertex |
| ユーザ |
Yuulis |
| 言語 |
C++ 23 (gcc 12.2) |
| 得点 |
475 |
| コード長 |
4047 Byte |
| 結果 |
AC |
| 実行時間 |
778 ms |
| メモリ |
52016 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
475 / 475 |
| 結果 |
|
|
| セット名 |
テストケース |
| 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 |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
1 ms |
3532 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3588 KiB |
| 01_random_00.txt |
AC |
437 ms |
23168 KiB |
| 01_random_01.txt |
AC |
751 ms |
37684 KiB |
| 01_random_02.txt |
AC |
541 ms |
28040 KiB |
| 01_random_03.txt |
AC |
760 ms |
37792 KiB |
| 01_random_04.txt |
AC |
559 ms |
28784 KiB |
| 01_random_05.txt |
AC |
740 ms |
37776 KiB |
| 01_random_06.txt |
AC |
723 ms |
36620 KiB |
| 01_random_07.txt |
AC |
757 ms |
37716 KiB |
| 02_path_00.txt |
AC |
677 ms |
51248 KiB |
| 02_path_01.txt |
AC |
778 ms |
51984 KiB |
| 02_path_02.txt |
AC |
771 ms |
51956 KiB |
| 02_path_03.txt |
AC |
770 ms |
52016 KiB |
| 03_star_1_00.txt |
AC |
618 ms |
39204 KiB |
| 03_star_1_01.txt |
AC |
667 ms |
39212 KiB |
| 03_star_1_02.txt |
AC |
699 ms |
39188 KiB |
| 04_star_2_00.txt |
AC |
673 ms |
37248 KiB |
| 04_star_2_01.txt |
AC |
705 ms |
38168 KiB |
| 04_star_2_02.txt |
AC |
755 ms |
37232 KiB |
| 04_star_2_03.txt |
AC |
774 ms |
43920 KiB |
| 04_star_2_04.txt |
AC |
769 ms |
47076 KiB |
| 05_star_3_00.txt |
AC |
754 ms |
36752 KiB |
| 05_star_3_01.txt |
AC |
753 ms |
37196 KiB |
| 05_star_3_02.txt |
AC |
755 ms |
37180 KiB |
| 06_corner_00.txt |
AC |
681 ms |
47104 KiB |
| 06_corner_01.txt |
AC |
678 ms |
47092 KiB |
| 06_corner_02.txt |
AC |
766 ms |
46984 KiB |
| 06_corner_03.txt |
AC |
770 ms |
47008 KiB |
| 06_corner_04.txt |
AC |
769 ms |
46908 KiB |
| 06_corner_05.txt |
AC |
765 ms |
46760 KiB |