Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,abm,mmx,avx,avx2,popcnt,tune=native")
  2. //#pragma GCC optimize("SEX_ON_THE_BEACH")
  3. //#pragma GCC optimize("fast-math")
  4. //#pragma GCC optimize("unroll-loops")
  5. //#pragma comment(linker, "/STACK:36777216")
  6.  
  7. #define _CRT_SECURE_NO_WARNINGS
  8. #include <chrono>
  9. #include <set>
  10. #include <map>
  11. #include <deque>
  12. #include <cmath>
  13. #include <queue>
  14. #include <cassert>
  15. #include <random>
  16. #include <bitset>
  17. #include <iomanip>
  18. #include <numeric>
  19. #include <time.h>//////////////
  20. #include <ctime>
  21. #include <string>
  22. #include <cstdio>
  23. #include <vector>
  24. #include <cstdlib>
  25. #include <iostream>
  26. #include <algorithm>
  27. #include <unordered_map>
  28. #include <unordered_set>
  29. //++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
  30. #define endl '\n'
  31. #define mp make_pair
  32. #define pbc push_back
  33. #define pob pop_back()
  34. #define empb emplace_back
  35. #define queuel queue<long long>
  36. #define sqr(a) ((a) * (a))
  37. #define all(x) (x).begin(), (x).end()
  38. #define rall(x) (x).rbegin(), (x).rend()
  39. #define pin(p) cin >> p.first >> p.second;
  40. #define uniq(a) sort(all(a));(a).resize(unique(all(a)) - a.begin());
  41. #define rev(v) reverse(v.begin(), v.end());
  42. #define sout(s, c) for (auto i : s) cout << i << c;
  43. #define pout(p) cout << p.first << " " << p.second;
  44. #define er(v, l, r) erase(v.begin() + l, v.begin() + r);
  45. #define vin(v) for (ll i = 0; i < v.size(); ++i) cin >> v[i];
  46. #define vout(v, c) for (int i = 0; i < v.size(); ++i) cout << v[i] << c;
  47. #define pushi(v, a) for (int i = 0; i < a.size(); ++i) v.push_back(a[i]);
  48. #define fastio() ios_base::sync_with_stdio(0); cout.tie(0); cin.tie(0); srand(time(NULL))
  49. #define sp system("pause")
  50. //++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
  51. using namespace std;
  52.  
  53. //++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
  54. typedef long long ll;
  55. typedef long double ld;
  56. typedef unsigned long long ull;
  57. //++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
  58. const ld EPS = 1e-5;
  59. const ld PI = acos(-1);
  60. int mod = (int)998244353;
  61. const int MOD7 = 1000000007;
  62. const int MOD9 = 1000000009;
  63. const int a228 = 18;
  64. const ll kekmod = 1791791791;
  65. const ll bestmod = 1148822869;
  66. vector<ll> mods = { kekmod,bestmod,mod,MOD9,1000000007 };
  67. vector<ll> hashpows = { 29,31,37,43,47,53,179,229 };
  68. mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count() + 228 + 'i' + 'q' + 1337 + 1488);
  69. ll MOD = mods[rnd() % mods.size()];
  70. ll hashpow = hashpows[rand() % hashpows.size()];
  71. const int MAXN = 1e6 + 228;
  72. int a[MAXN];
  73. int ans[MAXN];
  74. vector<int> g[MAXN];
  75. unordered_set<int> dfs(int v, int p)
  76. {
  77. unordered_set<int> nw = { a[v] };
  78. for (int i : g[v])
  79. {
  80. if (i != p)
  81. {
  82. unordered_set<int> nwos = dfs(i, v);
  83. if (nwos.size() > nw.size())
  84. {
  85. swap(nwos, nw);
  86. }
  87. for (int j : nwos) nw.insert(j);
  88. }
  89. }
  90. ans[v] = nw.size();
  91. return nw;
  92. }
  93. signed main()
  94. {
  95. fastio();
  96. int n;
  97. cin >> n;
  98. int vv = 0;
  99. for (int i = 1; i <= n; ++i)
  100. {
  101. int p, c;
  102. cin >> p >> c;
  103. a[i] = c;
  104. if (p)
  105. {
  106. g[i].pbc(p);
  107. g[p].pbc(i);
  108. }
  109. else
  110. {
  111. vv = i;
  112. }
  113. }
  114. dfs(vv, vv);
  115. for (int i = 1; i <= n; ++i)
  116. {
  117. cout << ans[i] << ' ';
  118. }
  119. sp;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement