#include #include #include #define MAX_N 2048 // massimo lato della regione tibetana #define MAX_DST INT_MAX // massima distanza possibile using namespace std; vector ListaDiAdiacenza[MAX_N]; vector Peso[MAX_N]; int Visitato[MAX_N]; // vettore che segna se il nodo e' stato visitato int Distanza[MAX_N]; // vettore con tutte le distanze dalla sorgente int N; int min( int x, int y ) // funzione che calcola il minimo { return x < y ? x : y; } void leggi() { int M, a, b, w; cin >> N >> M; for (int i=0; i> a >> b >> w; a--, b--; ListaDiAdiacenza[a].push_back(b); ListaDiAdiacenza[b].push_back(a); Peso[a].push_back(w); Peso[b].push_back(w); } } void dijkstra(int sorgente) // procedura che calcola tutte le distanze dalla sorgente con l'algoritmo di Dijkstra { int nmin, dmin, finito; Distanza[sorgente]=0; // imposto la distanza della sorgente a 0, il resto e' gia' a infinito finito=0; while (!finito) { // finche' serve, ripeti: nmin=-1; dmin=MAX_DST; for (int i=0; i