Cod sursa(job #1425422)

Utilizator mariana-geanina.stroeStroe Mariana Geanina mariana-geanina.stroe Data 27 aprilie 2015 14:15:40
Problema Diametrul unui arbore Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <vector>
#include <queue>
#include <fstream>

using namespace std;

vector<int> v[100];
queue<int> q;

int viz[100001],distanta[100001];
int main()
{ int i,x,y,n,m,s,z,u,maxim=0;
    fstream f("darb.in");
    fstream g("darb.out");
    f>>n;
    m =n - 1;
    for (i = 0; i < m; i++)
        {
            f>>x>>y;
            v[x].push_back(y);
            v[y].push_back(x);
        }

    s=1;
    viz[s] = 1;
    q.push(s);
    while (!q.empty())
        {
         z = q.front();
         q.pop();

         for(i = 0; i < v[z].size(); i++)
         {
             u=v[z][i];
            if(viz[u]==0)
                {
                    viz[u] = 1;
                    q.push(u);
                }
         }
        }

    s =z;
    for(i=1;i<n;i++) viz[i]=0;
    viz[s] =1;
    q.push(s);

    while (!q.empty())
        {
         z = q.front();
         q.pop();

         for(i = 0; i < v[z].size(); i++)
         {

            u=v[z][i];
            if(viz[u]==0)
                {
                    viz[u]= 1;
                    distanta[u] = distanta[z] + 1;
                    q.push(u);
                }
         }
        }

    for(i = 1; i <= n; i++)
      if(maxim < distanta[i])
            maxim = distanta[i];

    g<<maxim+1;

    return 0;
}