Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- #include <set>
- #include <queue>
- #include <algorithm>
- #include <string>
- #include <cmath>
- #include <cstdio>
- #include <iomanip>
- #include <fstream>
- #include <cassert>
- #include <cstring>
- #include <unordered_set>
- #include <unordered_map>
- #include <numeric>
- #include <ctime>
- #include <bitset>
- #include <complex>
- #include <random>
- using namespace std;
- vector<int> used;
- vector<vector<int>> g;
- void dfs(int cur, int ch, vector<int> &h) {
- h[cur] = ch;
- used[cur] = 1;
- for (auto t : g[cur]) {
- if (!used[t]) {
- dfs(t, ch + 1, h);
- }
- }
- }
- int mys(int len) {
- return len - 1;
- }
- signed main() {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- int n;
- int a, b;
- cin >> n >> a >> b;
- a--;
- b--;
- used.resize(n);
- g.resize(n);
- for (int i = 0; i + 1 < n; i++) {
- int u, v;
- cin >> u >> v;
- u--;
- v--;
- g[u].push_back(v);
- g[v].push_back(u);
- }
- vector<int> ha(n);
- vector<int> hb(n);
- dfs(a, 0, ha);
- fill(used.begin(), used.end(), 0);
- dfs(b, 0, hb);
- int ans = 0;
- for (int i = 0; i < n; i++) {
- if (hb[i] > ha[i]) {
- ans = max(ans, ha[i] + mys(hb[i] - ha[i]));
- }
- }
- cout << ans << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement