Cod sursa(job #1382483)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 9 martie 2015 09:02:04
Problema Diametrul unui arbore Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>
#define nmax 100005
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
int n,viz[nmax],niv[nmax],frunza;
int x,y,sol;
vector <int> v[nmax];

void dfs(int nod,int ni)
{
    vector <int> ::iterator it;
    viz[nod]=1;
    niv[nod]=ni;
    for (it=v[nod].begin();it!=v[nod].end();it++) {
        x=*it;
        if (viz[x]==0) {
            dfs(x,ni+1);
        }
    }
}


int main()
{
    int i,j;
    f>>n;
    for (i=2;i<=n;i++) {
        f>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs(1,0);
    for (i=1;i<=n;i++) {
        viz[i]=0;
        if (niv[i]>niv[frunza])
            frunza=i;
        niv[i]=0;
    }
    dfs(frunza,1);
    for (i=1;i<=n;i++) {
        sol=max(sol,niv[i]);
    }
    g<<sol;
    return 0;
}