Cod sursa(job #2225100)

Utilizator PredaBossPreda Andrei PredaBoss Data 25 iulie 2018 21:47:06
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;
bitset<100005>ap1,ap2;
int n,x,y,mx,vf;
vector<int>nod[100005];
void go_get(int pos,int howmany)
{
    if(howmany>mx)
    {
        mx=howmany;
        vf=pos;
    }
    ap2[pos]=1;
    for(int i=0;i<nod[pos].size();i++)
    {
        if(ap2[nod[pos][i]])
            continue;
        go_get(nod[pos][i],howmany+1);
    }
}
void go_visit(int pos,int howmany)
{
    if(howmany>mx)
    {
        mx=howmany;
        vf=pos;
    }
    ap1[pos]=1;
    for(int i=0;i<nod[pos].size();i++)
    {
        if(ap1[nod[pos][i]])
            continue;
        go_visit(nod[pos][i],howmany+1);
    }
}
int main()
{
    freopen("darb.in","r",stdin);
    freopen("darb.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n-1;i++)
    {
        scanf("%d %d",&x,&y);
        nod[x].push_back(y);
        nod[y].push_back(x);
    }
    go_visit(1,1);
    mx=0;
    go_get(vf,1);
    printf("%d",mx);
    return 0;
}