Cod sursa(job #1217309)

Utilizator cojocarugabiReality cojocarugabi Data 7 august 2014 01:44:00
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <vector>
#include <cstring>
#define nmax 100005
#define pb push_back
using namespace std;
vector <int> s[nmax];
int S[nmax],c[nmax],n,x,y,last=1;
int main()
{
    freopen("darb.in","r",stdin);
    freopen("darb.out","w",stdout);
    scanf("%d\n",&n);
    for (int i=1;i<n;++i)
    {
        scanf("%d%d\n",&x,&y);
        s[x].pb(y);s[y].pb(x);
    }
    int g=c[1]=1;
    S[1]=1;
    for (int f=1;f<=g;++f)
        for (int i=0;i<s[c[f]].size();++i)
            if (!S[s[c[f]][i]])
                S[s[c[f]][i]]=S[c[f]]+1,last=c[++g]=s[c[f]][i];
    memset(c,0,sizeof(c));
    memset(S,0,sizeof(S));
    g=1;c[1]=last;
    S[last]=1;
    for (int f=1;f<=g;++f)
        for (int i=0;i<s[c[f]].size();++i)
            if (!S[s[c[f]][i]])
                S[s[c[f]][i]]=S[c[f]]+1,last=c[++g]=s[c[f]][i];
    printf("%d\n",S[last]);
}