Cod sursa(job #2795414)

Utilizator Andy_ANDYSlatinaru Andrei Alexandru Andy_ANDY Data 6 noiembrie 2021 12:21:37
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <bits/stdc++.h>
#define ll long long
//#define int ll
using namespace std;

ifstream f("darb.in");
ofstream g("darb.out");

int n,viz[100005],dist[100005];
vector < int > G[100005];

void dfs(int nod)
{
    viz[nod] = 1;

    for(int vecin:G[nod])
    {
        if(!viz[vecin])
        {
            dist[vecin] = dist[nod] + 1;
            dfs(vecin);
        }
    }
}

int main()
{
    //ios_base::sync_with_stdio(0);
    //cin.tie(0);

    f>>n;

    for(int i=1;i<n;++i)
    {
        int a,b;
        f>>a>>b;
        G[a].push_back(b);
        G[b].push_back(a);

    }

    dfs(1);
    dist[1]=1;

    int last = 0 , mx = 0;

    for(int i=1;i<=n;++i)
    {
        if(mx<dist[i])
        {
            mx = dist[i];
            last = i;
        }
    }

    for(int i=1;i<=n;++i)
    {
        dist[i] = viz[i] = 0;
    }


    dist[last] = 1;
    dfs(last);
    mx = 0 , last = 0;

    for(int i=1;i<=n;++i)
    {
        if(mx<dist[i])
        {
            mx = dist[i];
            last = i;
        }
    }

    g<<mx;


    return 0;
}