Cod sursa(job #1791853)

Utilizator sebi110Ciobanu Sebastian sebi110 Data 29 octombrie 2016 19:41:39
Problema Diametrul unui arbore Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
vector <int>v[100000];
queue <int> q;
queue <int> lg;
int last,viz[100000],lung;
void curatare()
{
    int i=1;
    while(viz[i]!=0)viz[i++]=0;
}
void BFS(int x)
{
    int p,i;
    while(!q.empty())
    {
        p=q.front();q.pop();
        i=0;
        while(v[p].begin()+i<v[p].end())
        {
            if(viz[v[p][i]]==0)
            {
                viz[v[p][i]]=1;
                q.push(v[p][i]);
                lg.push(lg.front()+1);
            }
            i++;
        }
        last=p;lung=lg.front();
        lg.pop();
    }
}
int main()
{
    int n,x,y;
    fin>>n;
    while(fin>>x>>y)
    {
        v[x].push_back(y);
        v[y].push_back(x);
    }
    q.push(1);lg.push(0);
    BFS(1);
    q.push(last);lg.push(0);
    curatare();
    BFS(last);
    fout<<lung+1;
    return 0;
}