Cod sursa(job #1674090)

Utilizator superstar1998Moldoveanu Vlad superstar1998 Data 4 aprilie 2016 13:06:26
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
#define pb push_back
#define mp make_pair
#define MAXN 100001
#define INFILE "darb.in"
#define OUTFILE "darb.out"
using namespace std;
ifstream f(INFILE);
ofstream g(OUTFILE);
vector<int> G[MAXN];
vector<int>::iterator it;
bitset<MAXN>use,use1;
queue<int>q;
int n,a,b,lmax,l;
int bf(int x)
{
    q.push(x);
    use[x]=1;
    while(!q.empty())
    {
        x=q.front();q.pop();
        for(it=G[x].begin();it!=G[x].end();it++)
            if(!use[*it])q.push(*it),use[*it]=1;
    }
    return x;
}
void df(int x)
{
    l++;
    use1[x]=1;
    if(l>lmax)lmax=l;
    for(vector<int>::iterator it=G[x].begin();it!=G[x].end();it++)
        if(!use1[*it])df(*it);
    l--;
}
int main()
{
    f>>n;
    for(int i=1;i<n;i++)
    {
        f>>a>>b;
        G[a].pb(b);
        G[b].pb(a);
    }
    df(bf(1));
    g<<lmax;
    f.close();
    g.close();
    return 0;
}