Cod sursa(job #2502283)

Utilizator NicuCNicu Capatina NicuC Data 30 noiembrie 2019 17:13:29
Problema Diametrul unui arbore Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>

#define NMAX 100001

using namespace std;

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

int n,a,b,viz[NMAX],maxim=-1,nmax;

struct nod{
    set<int>s;
}m[NMAX];

void DFS(int nod,int dist)
{
    viz[nod]=dist;
    for(int i = 1;i <= n; i++)
        if(m[nod].s.find(i) != m[nod].s.end() && viz[i] == 0)
            DFS(i,dist+1);
}

int main()
{
    int i;
    fin>>n;
    for(i=1;i<=n-1;i++)
    {
        fin>>a>>b;
        m[a].s.insert(b);
        m[b].s.insert(a);
    }
    DFS(1,1);
    for(i = 1;i <= n; i++)
        if(viz[i] > maxim) {
            maxim = viz[i];
            nmax=i;
        }
    memset(viz,0,sizeof(viz));
    DFS(nmax,1);
    maxim=-1;
    for(i = 1;i <= n; i++)
        if(viz[i] > maxim) {
            maxim = viz[i];
            nmax=i;
        }
    fout<<maxim;
	return 0;
}