Cod sursa(job #2164069)

Utilizator OpportunityVlad Negura Opportunity Data 12 martie 2018 21:20:52
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;
#define _ ios_base::sync_with_stdio(false);cout.precision(30);cout.tie(0);cin.tie(0);
#define ll long long
#define ld long double
#define rep(i, a, b) for(__typeof(b)i=(a)-((a)>(b));i!=(b)-((a)>(b));i+=1-2*((a)>(b)))
#define whilet() ll t;cin>>t;while(t--)
#define all(c) (c).begin(), (c).end()

ifstream fi("darb.in");
ofstream fo("darb.out");

ll n,x,y,vis[100001], d1, n1, d2, n2;
vector<ll> G[100001];

void dfs(ll node, ll dist, ll &d, ll &n) {
    if (dist > d) d = dist, n = node;
    for (auto x:G[node]) {
        if (!vis[x]) {
            vis[x] = 1;
            dfs(x, dist+1, d, n);
        }
    }
}

int main() {_
    fi >> n;
    rep(i,0,n) {
        fi >> x >> y;
        G[x].push_back(y);
        G[y].push_back(x);
    }

    vis[1] = 1;
    dfs(1, 1, d1, n1);
    memset(vis, 0, sizeof(vis));
    vis[n1] = 1;
    dfs(n1, 1, d2, n2);

    fo << d2;

    return 0;
}