Cod sursa(job #1180562)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 30 aprilie 2014 19:09:25
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<fstream>
#include<vector>
#include<bitset>
using namespace std;

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

int n,noduri[100005],lg,costuri[100005],maxim,nod;
vector<int>v[100005];
bitset<100005>viz;

inline void Citire()
{
    int i,x,y;
    fin>>n;
    for (i=1;i<=n-1;i++)
        {
            fin>>x>>y;
            v[x].push_back(y);
            v[y].push_back(x);
        }
    for (i=1;i<=n;i++)
        if (v[i].size()==1)
            noduri[++lg]=i;
}

inline void DFSa(int x)
{
    int i,len;
    viz[x]=1;
    len=v[x].size();
    for (i=0;i<len;i++)
        if (!viz[v[x][i]])
            {
                costuri[v[x][i]]=costuri[x]+1;
                if (costuri[v[x][i]]>maxim)
                    {
                        maxim=costuri[v[x][i]];
                        nod=v[x][i];
                    }
                DFSa(v[x][i]);
            }
}

int main()
{
    Citire();
    DFSa(1);
    for (int i=1;i<=n;i++)
        {
            viz[i]=0;
            costuri[i]=0;
        }
    maxim=0;
    DFSa(nod);
    maxim++;
    fout<<maxim;
    return 0;
}