Cod sursa(job #3280659)

Utilizator andiRTanasescu Andrei-Rares andiR Data 26 februarie 2025 23:39:03
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.45 kb
// Author: Tanasescu Andrei-Rares
/*
     █████╗  ██████╗ ████████╗
    ██╔══██╗ ██╔══██╗╚══██╔══╝
    ███████║ ██████╔╝   ██║   
    ██╔══██║ ██╔══██╗   ██║   
    ██║  ██║ ██║  ██║   ██║   
    ╚═╝  ╚═╝ ╚═╝  ╚═╝   ╚═╝   
*/
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <stack>
#include <deque>
#include <iomanip>
#include <vector>
#include <cassert>

#pragma GCC optimize("O3")

#define fi first
#define se second
#define pb push_back
#define pf push_front

using namespace std;

ifstream fin ("darb.in");
ofstream fout ("darb.out");

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const ll Nmax=1e5+5, inf=1e9+5;

int n;
vector<int> ad[Nmax];

pii dfs(int node, int p, int h){
    pii mx={h, node};
    for (auto it:ad[node])
        if (it!=p)
            mx=max(mx, dfs(it, node, h+1));

    return mx;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    fin>>n;
    for (int i=1; i<n; i++){
        int a, b;
        fin>>a>>b;
        ad[a].pb(b);
        ad[b].pb(a);
    }
    int node=dfs(1, 0, 1).se;
    fout<<dfs(node, 0, 1).fi;

    return 0;
}