Pagini recente » Cod sursa (job #1572885) | Cod sursa (job #2592669) | Cod sursa (job #2703558) | Cod sursa (job #1561679) | Cod sursa (job #1293866)
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 100000
typedef struct lista {
int nod;
struct lista *next;
} lista;
lista *g[MAX_N+1];
int n, distanta, maxDistanta, max;
char vizitat[MAX_N+1];
void adaugare(int i, int j) {
lista *p = malloc(sizeof(lista));
p -> nod = j;
p -> next = g[i];
g[i] = p;
}
void citire() {
FILE *in = fopen("diametru.in","r");
fscanf(in,"%d",&n);
int i, a, b;
for ( i = 1; i < n; i++ ) {
fscanf(in,"%d %d", &a, &b);
adaugare(a,b);
adaugare(b,a);
}
}
void DFS(int nod) {
vizitat[nod] = 1;
if ( distanta > maxDistanta ) {
maxDistanta = distanta;
max = nod;
}
lista *p;
for ( p = g[nod]; p != NULL; p = p -> next ){
if (!vizitat[p -> nod] ) {
distanta++;
DFS(p->nod);
distanta--;
}
}
}
int main()
{
citire();
DFS(1);
int i;
for ( i = 1; i < n; i++ )
vizitat[i] = 0;
DFS(max);
FILE *out = fopen("diametru.out","w");
fprintf(out,"%d",maxDistanta+1);
return 0;
}