Cod sursa(job #2246848)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 27 septembrie 2018 17:08:14
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include<vector>
#include<fstream>
#define DIM 100003
using namespace std;
vector <int> L[DIM];
int v[DIM],c[DIM],l[DIM];
int i,n,m,nod,p,u,dmax,nodmax,x,y;
void bfs (int a)
{
    for(i=1;i<=n;i++)
    {
        v[i]=c[i]=l[i]=0;
    }
 v[a]=1;
 c[1]=a;
 p=1;
 u=1;
 l[a]=1;
 while(p<=u)
     {
         for(i=0;i<L[c[p]].size();i++)
         {
             nod=L[c[p]][i];
             if(v[nod]==0)
             {
                 v[nod]=1;
                 l[nod]=l[c[p]] +1;
                 u++;
                 c[u]=nod;
             }
         }
         p++;
     }
     dmax=l[c[u]];
     nodmax=c[u];
}
int main()
{
  ifstream fin("darb.in");
  ofstream fout("darb.out");
  fin>>n;
  while(fin>>x>>y)
  {
      L[x].push_back(y);
      L[y].push_back(x);
  }
  bfs(1);
  bfs(nodmax);
  fout<<dmax;
}