Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define ll long long
- using namespace std;
- int main()
- {
- ll n,x,y;
- cin >> n;
- vector<ll>g[n+1];
- for(ll i = 0; i<n-1 ; i++){
- cin >> x >> y;
- g[x].push_back(y);
- g[y].push_back(x);
- }
- vector<ll>vis(n+1);
- vector<ll>dis(n+1);
- ll src = g[1][0];
- dis[src] = 0;
- vis[src] = 1;
- queue<ll> q;
- q.push(src);
- while(q.size() > 0){
- ll x = q.front(); q.pop();
- for(ll i = 0; i<g[x].size(); i++){
- if(vis[g[x][i]] == 1)continue;
- vis[g[x][i]] = 1;
- dis[g[x][i]] = dis[x] + 1;
- q.push(g[x][i]);
- }
- }
- ll max = -1;
- ll index;
- for(ll i =0 ; i<dis.size(); i++){
- if(dis[i] > max){
- max = dis[i];
- index = i;
- }
- }
- vector<ll>vis1(n+1);
- vector<ll>dis1(n+1);
- src = index;
- dis1[src] = 0;
- vis1[src] = 1;
- queue<ll> q1;
- q1.push(src);
- while(q1.size()){
- ll x = q1.front();
- q1.pop();
- for(ll i = 0; i<g[x].size(); i++){
- if(vis1[g[x][i]] == 1)continue;
- vis1[g[x][i]] = 1;
- dis1[g[x][i]] = dis1[x] + 1;
- q1.push(g[x][i]);
- }
- }
- for(ll i =0 ; i<dis.size(); i++){
- if(dis1[i] > max){
- max = dis1[i];
- index = i;
- }
- }
- cout << max << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement