#include #define MAX_N 10240 // massimo numero di isole che potrebbero capitarmi #define MAX_DEG 1024 // massimo grado per ogni nodo #define MAX_L 1024000 // massimo numero di ponti costruibili using namespace std; int Adiacenti[MAX_N][MAX_DEG]; int Grado[MAX_N]; int Visitato[MAX_N]; // vettore che segna se il nodo e' stato visitato int N, nmax, dmax; void leggi() { int a, b; cin >> N; for (int i=1; i> a >> b; a--, b--; Adiacenti[a][Grado[a]++] = b; Adiacenti[b][Grado[b]++] = a; } } void visita(int nodo, int dist) // procedura che visita (in profondita' ricorsiva) il nodo dato ricordandosi la distanza dalla partenza { if (Visitato[nodo] > 0) { // se ho gia' visitato il nodo, esco return; } Visitato[nodo] = 1; // visito il nodo if (dist > dmax) { // se mi sono allontanato piu' del record, mi salvo il nuovo record dmax = dist; nmax = nodo; } for (int i=0; i