Cod sursa(job #2195660)

Utilizator richard26Francu Richard richard26 Data 16 aprilie 2018 22:43:09
Problema Diametrul unui arbore Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>

#include<fstream>
using namespace std ;
ifstream f("darb.in") ;
ofstream g("darb.out") ;
long long a[10001][10001],n,v[100001],niv[100001],c[100001] ;
int dfs(int nod,int nr)
{
    int i ;
    v[nod]=1 ;
    if(nr==n) return nod ;
      else  for(i=1;i<=n;i++) if(a[i][nod]==1&&v[i]==0) dfs(i,nr+1) ;
}
int bfs(int nod)
{
    int prim=1,ultim=1,i,maxi=0 ;
    niv[nod]=1 ;
    c[prim]=nod ;
    while(prim<=ultim)
    {   int nc=c[prim] ;
        for(i=1;i<=n;i++) if(a[i][nc]==1&&v[i]==0)
        {
            ultim++ ;
            c[ultim]=i ;
            niv[i]=niv[nc]+1 ;
            v[i]=1 ;
        }
        prim++ ;
    }
    for(i=1;i<=n;i++) if(maxi<niv[i]) maxi=niv[i] ;
    return maxi ;
}
int main()
{ int x,y,i ;
  f>>n ;
  for(i=1;i<=n-1;i++){f>>x>>y ;
                    a[x][y]=1 ;
                    a[y][x]=1 ;
                    }
 x=dfs(1,1) ;
 for(i=1;i<=n;i++) v[i]=0 ;

 y=bfs(x) ;
 g<<y ;
 }