Cod sursa(job #3237629)

Utilizator popescu_georgePopescu George popescu_george Data 10 iulie 2024 19:23:10
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("darb.in");
ofstream G("darb.out");
#define Z 2048
int n,p=Z,i,j,m,b;
vector<vector<int> > a(100001,vector<int>());
vector<int> c(100001,0);
char s[Z];
inline char A()
{
    if(p==Z)
        F.read(s,Z),p=0;
    return s[p++];
}
int B()
{
    char c;
    for(c=A();!isdigit(c);c=A());
    int n=0;
    for(;isdigit(c);n=n*10+c-48,c=A());
    return n;
}
int C(int i)
{
    int u=0,v=0,w;
    for(int j:a[i])
        if(!c[j]) {
            if(c[j]=c[i]+1,w=C(j),w>=u)
                v=u,u=w;
            else if(w>=v)
                v=w;
        }
    if(u+v+1>b)
        b=u+v+1;
    return 1+u;
}
int main()
{
    for(n=B(),m=n-1;m--;i=B(),j=B(),a[i].push_back(j));
    return C(1),G<<b,0;
}