結果
問題 | No.2427 Tree Distance Two |
ユーザー |
|
提出日時 | 2023-08-18 22:02:28 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 186 ms / 2,000 ms |
コード長 | 5,675 bytes |
コンパイル時間 | 3,466 ms |
コンパイル使用メモリ | 263,840 KB |
実行使用メモリ | 21,760 KB |
最終ジャッジ日時 | 2024-11-28 07:09:27 |
合計ジャッジ時間 | 7,818 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 35 |
ソースコード
#pragma GCC optimize("Ofast")#pragma GCC optimize("unroll-loops")#include <bits/stdc++.h>using namespace std;using uint = unsigned int;using ll = long long;using ull = unsigned long long;using ld = long double;using i128 = __int128_t;#define all(a) a.begin(), a.end()#define allr(a) a.rbegin(), a.rend()template <class A>int len(const A &a) {return a.size();}template <typename T>using vec = vector<T>;template <typename T>using vec2 = vec<vec<T>>;template <typename T>using vec3 = vec<vec2<T>>;template <typename T>using vec4 = vec<vec3<T>>;template <typename T>using vec5 = vec<vec4<T>>;#define VEC(T, a, ...) \vec<T> a(__VA_ARGS__)#define VEC2(T, a, n, ...) \vector a(n, vec<T>(__VA_ARGS__));#define VEC3(T, a, n, m, ...) \vector a( \n, \vector(m, vec<T>(__VA_ARGS__)) \);#define VEC4(T, a, n, m, l, ...) \vector a( \n, \vector( \m, \vector(l, vec<T>(__VA_ARGS__)) \) \);#define eval_4(a, b, c, d, e, ...) e#define loop while (1)#define rep(n) \for (int __ = 0; __ < n; __++)#define range_1(i, n) \for (int i = 0; i < n; i++)#define range_2(i, a, b) \for (ll i = a; i < b; i++)#define range_3(i, a, b, c) \for (ll i = a; i < b; i += c)#define range(...) \eval_4(__VA_ARGS__, range_3, range_2, range_1, rep)( \__VA_ARGS__ \)#define ranger_1(i, n) \for (int i = n; i--;)#define ranger_2(i, a, b) \for (ll i = b; i-- > a;)#define ranger_3(i, a, b, c) \for (ll i = b - 1; i >= a; i -= c)#define range_rev(...) \eval_4(__VA_ARGS__, ranger_3, ranger_2, ranger_1)( \__VA_ARGS__ \)#define iter(x, a) \for (const auto &x : a)#define iter_mut(x, a) \for (auto &&x : a)template <typename T, typename U>istream &operator>>(istream &in, pair<T, U> &p) {return in >> p.first >> p.second;}template <typename T, typename U>ostream &operator<<(ostream &out,pair<T, U> &p) {out << p.first << ' ' << p.second;return out;}template <int k = 0, class T>void read_tup(istream &in, T &x) {if constexpr (tuple_size<T>::value > k) {in >> get<k>(x);read_tup<k + 1>(in, x);}}template <class... T>istream &operator>>(istream &in,tuple<T...> &x) {read_tup(in, x);return in;}template <int k = 0, class T>void out_tup(ostream &out, T &x) {if constexpr (tuple_size<T>::value > k) {if constexpr (k > 0) {out << ' ';}out << get<k>(x);out_tup<k + 1>(out, x);}}template <class... T>ostream &operator<<(ostream &out,tuple<T...> &x) {out_tup(out, x);return out;}template <typename T>auto operator<<(ostream &out, vec<T> a)-> ostream & {range(i, len(a)) {if (i) {out << ' ';}out << a[i];}return out;}template <typename T>auto operator<<(ostream &out, vec2<T> a)-> ostream & {iter_mut(x, a) out << x << '\n';return out;}template <typename T>auto operator>>(istream &in, vec<T> &a)-> istream & {iter_mut(x, a) in >> x;return in;}template <typename... T>void in(T &...a) {(cin >> ... >> a);}template <class T, class... U>void out(T a, const U... b) {cout << a;((cout << ' ' << b), ...);cout << '\n';}template <typename T = int>vec<T> iota(int n, T v = 0) {vec<int> a(n);std::iota(all(a), v);return a;}template <class T>using max_queue = priority_queue<T>;template <class T>using min_queue =priority_queue<T, vec<T>, greater<T>>;template <typename T>T pop(queue<T> &q) {T v = q.front();q.pop();return v;}template <typename T>T pop(deque<T> &q) {T v = q.front();q.pop_front();return v;}template <typename T>T pop(vec<T> &q) {T v = q.back();q.pop_back();return v;}template <typename T>T pop(max_queue<T> &q) {T v = q.top();q.pop();return v;}template <typename T>T pop(min_queue<T> &q) {T v = q.top();q.pop();return v;}template <typename T>T max(const vec<T> &a) {return *max_element(all(a));}template <typename T>T min(const vec<T> &a) {return *min_element(all(a));}int topbit(int x) {return 31 - __builtin_clz(x);}template <class T>bool operator==(const vec<T> &a,const vec<T> &b) {int n = len(a);if (len(b) != n) {return false;}range(i, n) {if (a[i] != b[i]) {return false;}}return true;}template <class T, class U>bool chmin(T &a, const U &b) {return b < a ? a = b, 1 : 0;}template <class T, class U>bool chmax(T &a, const U &b) {return b > a ? a = b, 1 : 0;}int popcnt(int x) {return __builtin_popcount(x);}template <class T, class U>T sum(const vec<U> &a) {return accumulate(all(a), 0ll);}template <class T>void unique(vec<T> &a) {sort(all(a));a.erase(std::unique(all(a)), a.end());}template <class T, class A>int lb(const A &a, const T &x) {auto p = lower_bound(all(a), x);return distance(a.begin(), p);}template <class T, class A>int ub(const A &a, const T &x) {auto p = upper_bound(all(a), x);return distance(a.begin(), p);}// define yes/no#define yesno(y, n) \void yes(bool f = 1) { \out(f ? #y : #n); \} \void no() { \out(#n); \}yesno(yes, no);// yesno(Yes, No);// yesno(YES, NO);void solve() {int n;in(n);vec2<int> g(n);rep(n - 1) {int u, v;in(u, v);u--;v--;g[u].push_back(v);g[v].push_back(u);}range(i, n) {int c = -len(g[i]);iter(v, g[i]) {c += len(g[v]);}out(c);}}int main() {ios::sync_with_stdio(0);cin.tie(0);// cout << setprecision(16);int t = 1;// in(t);while (t--) {solve();}}