Advertisement
Guest User

Untitled

a guest
May 20th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1. void dfs(int v) {
  2.     visited[v] = true;
  3.     sizes[v] = 1;
  4.     for (int i = 0; i < ways[v].size(); i++) {
  5.         if (!visited[ways[v][i]]) {
  6.             dfs(ways[v][i]);
  7.             sizes[v] += sizes[ways[v][i]];
  8.         }
  9.     }
  10. }
  11.  
  12. int find_center(int v, int n, int p) {
  13.     for (int i = 0; i < ways[v].size(); i++) {
  14.         if (!visited[ways[v][i]] && sizes[ways[v][i]] > n / 2 && ways[v][i] != p) {
  15.             return find_center(ways[v][i], n, v);
  16.         }
  17.     }
  18.     return v;
  19. }
  20.  
  21. int build(int v, int n, int last) {
  22.     int center = find_center(v, n, v);
  23.     visited[center] = true;
  24.     p[center] = last;
  25.     for (int i = 0; i < ways[center].size(); i++) {
  26.         if (!visited[ways[center][i]]) {
  27.             int z = build(ways[center][i], n / 2, center);
  28.         }
  29.     }
  30.     return center;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement