Cod sursa(job #2151527)

Utilizator zanugMatyas Gergely zanug Data 4 martie 2018 16:35:20
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <vector>
#include <fstream>

#define pb push_back

using namespace std;

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

const int NLIM = 1e5+10;

int n;
int lev[NLIM];
vector <int> v[NLIM];
int ossz;
int maxossz, er;
bool b[NLIM];

void bfs(int cnod)
{
    if(b[cnod])
        return;

    for(int i = 0; i < v[cnod].size(); ++i)
    {
        ++ossz;
        b[cnod] = 1;
        bfs(v[cnod][i]);
        --ossz;
        if(ossz > maxossz)
        {
            maxossz = ossz;
            er = cnod;
        }
        b[cnod] = 0;
    }
}

int main()
{
    fin >> n;

    int x, y;

    for(int i = 1; i <= n; ++i)
    {
        fin >> x >> y;
        v[x].pb(y);
        v[y].pb(x);
    }

    bfs(1);
    //int erk = er;
    //cout << maxossz << "\n";
    bfs(er);

    fout << maxossz+1 << "\n";

    return 0;
}