Cod sursa(job #1464361)

Utilizator TeodorescuStefanEduardTeodorescu Stefan Eduard TeodorescuStefanEduard Data 23 iulie 2015 09:35:39
Problema Diametrul unui arbore Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

fstream in("darb.in", ios::in);
fstream out("darb.out", ios::out);

#define nmax 100001

struct nod
{
	int info;
	nod *next;
} *lista[nmax], *p;

int n,i,j,s[nmax],ultim,t[nmax];

void df(int);

int main()
{
	in>>n;

	while(in>>i>>j)
	{
		p= new nod;
		p->info=j;
		p->next=lista[i];
		lista[i]=p;

		p= new nod;
		p->info=i;
		p->next=lista[j];
		lista[j]=p;
	}

	i=1;
	while(!lista[i])
		i++;
	df(i);

	
	for(i=1;i<=n;i++)
	{
		s[i]=0;
		t[i]=0;
	}
	j=0;
	df(ultim);
	i=t[ultim];
	while(i!=0)
	{
		j++;
		i=t[i];
	}

	
	out<<j+1;
	

    in.close();
    out.close();

	return 0;
}

void df(int node)
{
	ultim= node;
	int k;
	nod *q;
	s[node]=1;
	
	q=lista[node];
	while(q)
	{
		if(s[q->info]==0)
		{
			t[q->info]=node;
			df(q->info);
		}
		q=q->next;
	}
}