Advertisement
Asif_Anwar

RE

Mar 28th, 2021
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. #define pb push_back
  5. #define FastIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  6. #define F first
  7. #define S second
  8. typedef long long ll;
  9. typedef vector< int > vi;
  10. typedef map<int, int > mp;
  11. #define debug cout << -1 << endl;
  12. #define REP(i, a, b) for(int i=a; i<b; i++)
  13. #define pop pop_back
  14. const ll MOD = 1000000007;
  15. int cc = 1;
  16.  
  17. vector< int > adj[1005];
  18. vector< int > child[1005];
  19. bool isVis[1005];
  20. bool isConn[1005];
  21. //vector< int > track;
  22. ll temp = 0;
  23. int k;
  24. bool cmp(int a, int b)
  25. {
  26. //if(child[a].size()==child[b].size()) return a<b;
  27. return child[a].size() >= child[b].size();
  28. }
  29.  
  30. void dfs(int s)
  31. {
  32. //track.pb(s);
  33. isConn[s] = true;
  34. isVis[s] = true;
  35. for(auto x: adj[s]) {
  36. if(!isVis[x]) {
  37.  
  38. child[s].pb(x);
  39. dfs(x);
  40. }
  41. }
  42.  
  43. sort(child[s].begin(), child[s].end(), cmp);
  44. int sz = child[s].size();
  45. if(sz<k && sz!=0){
  46. //cout << "** " << s << " ** " << sz << endl;
  47. //isConn[s];
  48. for(auto x: child[s]) {
  49. isConn[x] = false;
  50. }
  51. child[s].clear();
  52. child[s].pb(s);
  53. //cout << s << " lol " << endl;
  54. //temp++;
  55. }
  56. else if(sz>k) {
  57. for(int i=k; i<sz; i++) {
  58. isConn[child[s][i]] = false;
  59. child[s].pop();
  60. }
  61. }
  62.  
  63. return;
  64. }
  65.  
  66. void solve()
  67. {
  68. int n;
  69. cin >> n >> k;
  70. for(int i=0; i<n-1; i++) {
  71. int a, b;
  72. cin >> a >> b;
  73. adj[a].pb(b);
  74. adj[b].pb(a);
  75. }
  76. ll sum = 0;
  77. dfs(1);
  78. for(int i=1; i<=n; i++) {
  79. //debug;
  80. if(isConn[i]) {
  81. //debug;
  82. //cout << i << " ";
  83. sum += (ll)child[i].size();
  84. }
  85. }
  86. cout << "Case " << cc++ << ": ";
  87. cout << sum+temp << endl;
  88. }
  89. int main()
  90. {
  91. FastIO;
  92. //freopen("tttt.in", "r", stdin);
  93. //freopen("tttt.out", "w", stdout);
  94. int t;
  95. //t = 1;
  96. cin >> t;
  97. while(t--){
  98. temp = 0;
  99. memset(isVis, false, sizeof(isVis));
  100. memset(isConn, false, sizeof(isConn));
  101. for(int i=0; i<=1004; i++) {
  102. adj[i].clear();
  103. child[i].clear();
  104. }
  105. solve();
  106. }
  107. return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement