Cod sursa(job #1428543)

Utilizator GinguIonutGinguIonut GinguIonut Data 4 mai 2015 18:44:25
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#define dim 100001
#include <vector>
#include <queue>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int viz[dim],dist[dim],last,a,b,n,inceput,i,node,nod,Max,op,op1;
vector <int> G[dim];
queue <int> q;
void bfs(int inceput)
{
    viz[inceput]=op;
    dist[inceput]=1;
    q.push(inceput);
    while(!q.empty())
    {
        node=q.front();
        for(i=0;i<G[node].size();i++)
        {
            nod=G[node][i];
            if(viz[nod]==op1)
            {
                viz[nod]=op;
                dist[nod]=dist[node]+1;
                if(dist[nod]>Max)
                    Max=dist[nod];
                    q.push(nod);
            }
        }
        last=node;
        q.pop();
    }
}
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>a>>b;
        G[a].push_back(b);
        G[b].push_back(a);
    }
    op=1;
    op1=0;
    bfs(a);
    op=0;
    op1=1;
    bfs(last);
    fout<<Max;
    return 0;
}