/** * Autore: VANESSA VIDALI - VR379624 * Data: 11/02/2015 * Problema: Esercizio 1 - MST **/ #include #include #include #include #include #include using namespace std; /** PSEUDO-ALGORITMO * * * 1) ordino archi per pesi crescenti * 2) per ogni arco, ordino nodi in ordine crescente (trasformo il grafo in un grafo orientato) * 3) inizializzo peso w=0, insieme MST vuoto * 4) scorro la lista degli archi in ordine crescente * 4.1) il nodo di arrivo dell'arco è contenuto in MST? * 4.1.1) SI, skip * 4.1.2) NO, aggiungo l'arco in MST e aggiungo il peso in w * 5) ritorno MST e w * */ /* struttura arco */ struct arco { int nodoPartenza; int nodoArrivo; int peso; bool soluzioneOttima; }; const int MAX_N = 10000; int N; const int MAX_M = 1000000; int M; const int MAX_Q = 100; int Q; int pesoMinimo = 0; vector grafoIniziale; //Grafo originale vector MST; //Grafo finale MST /* Criterio del sort */ bool comparaPesi(arco a, arco b){ return a.peso> N >> M >> Q; for(int i=0; i> a >> b >> w; if(a>b){ int tmp=b; b=a; a=tmp; } arco m = {a,b,w,false}; if(i