Advertisement
skimono

Untitled

Jun 24th, 2021
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <fstream>
  6. #include <string>
  7. #include <set>
  8. #include <deque>
  9. #include <queue>
  10. #include <map>
  11. #define int  long long
  12. #define endl "\n"
  13. using namespace std;
  14. const int INF = 1e18;
  15. long double eps = 1e-9;
  16. vector<vector<int>> g;
  17. vector<int> color;
  18. int n, x, y, k, res;
  19. int DFS(int i, int p) {
  20.     color[i] = 1;
  21.     int maxd = -1;
  22.     for (int v : g[i]) {
  23.         if (v == p) {
  24.             continue;
  25.         }
  26.         if (color[v] == 0) {
  27.             int d = DFS(v, i);
  28.             if (maxd != -1) {
  29.                 res = max(res, d + maxd + 2);
  30.             }
  31.             maxd = max(maxd, d);
  32.             res = max(res, maxd + 1);
  33.         }
  34.     }
  35.     return maxd + 1;
  36. }
  37. signed main() {
  38.     cin >> n;
  39.     int i, j, st = INF;
  40.     bool sup = false;
  41.     vector <int> check(n);
  42.     for (i = 0; i < n; i++) {
  43.         int a;
  44.         cin >> a;
  45.         if (a == 1 && st == INF) {
  46.             st = i;
  47.         }
  48.         check[i] = a;
  49.     }
  50.     g.resize(n);
  51.     color.resize(n);
  52.     for (i = 0; i < n - 1; i++) {
  53.         cin >> x >> y;
  54.         x--;
  55.         y--;
  56.         g[x].push_back(y);
  57.         g[y].push_back(x);
  58.     }
  59.     /*
  60.     for (i = 0; i < n; i++) {
  61.         for (j = 0; j < g[i].size(); j++) {
  62.             cout << g[i][j] << " ";
  63.         }
  64.         cout << endl;
  65.     }
  66.     */
  67.     DFS(0, -1);
  68.     cout << (res + 2 - 1) / 2;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement