Cod sursa(job #2291085)

Utilizator IoanaucnitIoana Tincu Ioanaucnit Data 27 noiembrie 2018 15:24:24
Problema Diametrul unui arbore Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
vector <int> *LA;
int n,i,lmax;
bool *viz;
int df(int nod) {
int h;
viz[nod]=1;
int m1=-1,m2=-1;
for(int j=0;j<LA[nod].size();j++)
  {
      int x=LA[nod][j];
      if(viz[x]==0)
       { viz[x]=1;
         h=df(x);
     if(h>m1) {
      m2=m1;
      m1=h;
     }
     else if(h>m2)
      { m2=h;
      }}
  }
    if(m1+m2+2>lmax)
    lmax=m1+m2+2;
    return m1+1;
}

int main()
{   f>>n;
   int x,y;
   viz=new bool[n+2];
   fill(viz,viz+n+2,0);
   LA=new vector <int> [n+2];
   for(i=1;i<=n-1;i++)
   { f>>x>>y;
     LA[x].push_back(y);
     LA[y].push_back(x);
   }
   df(1);
   g<<lmax;
    return 0;
}