Cod sursa(job #1130567)

Utilizator varga13VarGaz13 varga13 Data 28 februarie 2014 14:03:48
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#include <vector>
#include <queue>
#define mx 100009
using namespace std;

ifstream f("darb.in");
ofstream g("darb.out");

vector<int> A[mx];
queue<int> Q;
int n, cost[mx], Pos, Mx;
bool viz[mx];

void bfs(int S)
{
    viz[S]=1;
    cost[S]=1;
    for(Q.push(S);Q.size();Q.pop())
    {
        for(int i=0;i<A[Q.front()].size();++i)
        {
            int actual=A[Q.front()][i];
            if(!viz[actual])
            {

                Q.push(actual);
                cost[actual]+=cost[Q.front()]+1;
                viz[actual]=1;
                Mx=cost[actual];
                Pos=actual;

            }

        }

    }
}

void Read()
{
    int a,b;
    f>>n;
    for(int i=1;i<n;++i)
    {
       f>>a>>b;
       A[a].push_back(b);
       A[b].push_back(a);
    }

}



int main()
{
    Read();
    bfs(1);

    for(int i=0;i<=n;i++)
    {   //g<<i<<' '<<cost[i]<<'\n';
        viz[i]=0;
        cost[i]=0;
    }
    bfs(Pos);

    g<<cost[Pos];
    f.close();
    g.close();
    return 0;
}