#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 Regione[MAX_N]; // vettore contenente la regione (componente connessa) di appartenenza di ciascun nodo int AltriArchi[MAX_L][2]; // vettore con i ponti costruibili int N, M, L, nReg; void leggi() { int a, b; cin >> N >> M >> L; for (int i=0; i> a >> b; a--, b--; Adiacenti[a][Grado[a]++] = b; Adiacenti[b][Grado[b]++] = a; } for (int i=0; i> a >> b; a--, b--; AltriArchi[i][0] = a; AltriArchi[i][1] = b; } } void visita(int nodo, int reg_corr) // procedura che visita (in profondita' ricorsiva) il nodo dato appartenente alla componente connessa reg_corr { if (Regione[nodo] > 0) { // ho gia' visitato il nodo return; } Regione[nodo] = reg_corr; // visito il nodo assegnandolo alla regione corrente for (int i=0; i