Cod sursa(job #2344562)

Utilizator ionut2701Lazar Ionut ionut2701 Data 15 februarie 2019 11:22:56
Problema Diametrul unui arbore Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

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

int d[1001];
vector<int>L[1001];
int n,p;

int Citire()
{
    in>>n;
    int r,q;
    for(int i=1;i<n;i++)
    {
        in>>q>>r;
        L[q].push_back(r);
        L[r].push_back(q);
    }
    in.close();
}

void Init()
{
    for(int i=1;i<=n;i++)
        d[i]=1e9;
}

void DFS(int k)
{
    for(auto i:L[k])
        if(d[i]>d[k]+1)
        {
            d[i]=d[k]+1;
            DFS(i);
        }
}

void DetDiamentru()
{
    Init();
    d[1]=1;
    DFS(1);
    p=1;
    for(int i=2;i<=n;i++)
        if(d[p]<d[i])p=i;
    Init();
    d[p]=1;
    DFS(p);
    p=1;
    for(int i=2;i<=n;i++)
        if(d[p]<d[i])p=i;
    out<<d[p];
}

int main()
{
    Citire();
    DetDiamentru();
    return 0;
}