Cod sursa(job #1335119)

Utilizator LycrsTrifan Tamara Lycrs Data 5 februarie 2015 00:48:26
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <algorithm>
using namespace std;
 
ifstream cin("darb.in");
ofstream cout("darb.out");
 
typedef struct ls
{
    int info;
    ls *next;
} *nod;
 
int x, y, i, j, k, m, n, r=0, t, c[100005], mx, nd;
nod a[100005];
bool viz[100005];
 
void ad(int x, nod &y);

void dfs(int x);

 
 
int main()
{
	
	
    cin>>n;
    
    for(i=1; i<=n; ++i) viz[i]=0, c[i]=0, a[i]=NULL;
    
    
    for (i=1; i<n; ++i)
    {
        cin>>x>>y;
        ad(x, a[y]);
        ad(y, a[x]);
    }
   
   		mx=0; nd=1; c[1]=1;
        dfs(nd);
        
        
        
        for(i=1; i<=n; ++i) viz[i]=0;
		mx=0; c[nd]=1;
        dfs(nd);
        
        
        cout<<mx<<'\n';
    
 
 
    
    return 0;
}

void ad(int x, nod &y)
{
    nod p=new ls;
    p->info=x;
    p->next=y;
    y=p;
}
 
void dfs(int x)
{
    viz[x]=1;
	if (c[x]>mx) mx=c[x], nd=x;
  
    
    
    for (nod p=a[x]; p; p=p->next) 
	{ 
        if (viz[p->info]==0)  c[p->info]=c[x]+1, dfs(p->info); }
}