Advertisement
Mashrur

Untitled

Apr 15th, 2020
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.32 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int MAX = 2e5 + 5;
  5.  
  6. vector<int> grph[MAX];
  7. int level[10000];
  8. int visited[10000];
  9. vector<int> distance_From_source(MAX);
  10.  
  11. int BFS(int source, int destination){
  12. visited[source] = 1;
  13. level[source] = 0;
  14.  
  15. queue<int> q;
  16. q.push(source);
  17. while(!q.empty()){
  18. int x = q.front();
  19. q.pop();
  20. for(int i = 0; i < grph[x].size(); i++){
  21. int y = grph[x][i];
  22. if(visited[y] == 0){
  23. visited[y] = 1;
  24. if(level[y] == 0){
  25. level[y] = level[x] + 1;
  26. q.push(y);
  27. }
  28.  
  29. }
  30. }
  31. }
  32. distance_From_source[destination] = level[destination];
  33.  
  34. }
  35.  
  36. int solve(){
  37. int n, k , a, b, sm = 0;
  38. cin >> n >> k;
  39. memset(grph, 0, sizeof(grph));
  40. for(int i = 0; i < n - 1; i++){
  41. cin >> a >> b;
  42. grph[a].push_back(b);
  43. }
  44. for(int i = 1; i <= n; i++){
  45. BFS(1, i);
  46. }
  47. sort(distance_From_source.begin(), distance_From_source.end());
  48. reverse(distance_From_source.end(), distance_From_source.end());
  49. for(int x = 0; x < k; x++){
  50. sm += distance_From_source[x];
  51. }
  52. cout << sm << endl;
  53. }
  54.  
  55.  
  56. int main() {
  57. int t; cin >> t;
  58.  
  59. while(t--) {
  60. solve();
  61. }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement