mi sono imbattuto in questa domanda da interviewstreet.combidirezionale spanning tree
macchine hanno ancora una volta attaccato il regno di Xions. Il regno di Xions ha N città e N-1 strade bidirezionali. La rete stradale è tale che vi sia un percorso unico tra qualsiasi coppia di città.
Morpheus ha la notizia che K Machines sta pianificando di distruggere l'intero regno . Queste macchine vivono inizialmente in K diverse città del regno e in qualsiasi momento da ora possono pianificare e lanciare un attacco . Quindi ha chiesto a Neo di distruggere alcune delle strade per interrompere la connessione tra Macchine dopo aver distrutto quelle strade lì. non dovrebbe essere un percorso tra due macchine.
Poiché l'attacco può essere in qualsiasi momento da ora, Neo deve eseguire questa attività il più velocemente possibile. Ogni strada nel regno impiega un certo tempo per distruggere e può essere distrutto solo uno alla volta.
È necessario scrivere un programma che indichi a Neo la quantità minima di tempo necessaria per interrompere la connessione tra le macchine.
Ingresso campione La prima riga dell'ingresso contiene due interi separati da spazi, N e K. Le città sono numerate da 0 a N-1. Quindi seguire le linee N-1 , ciascuna contenente tre numeri interi separati da spazio x y z, che significa che c'è una strada bidirezionale che collega la città xe la città y, e per distruggere questa strada e richiede z unità di tempo. Quindi seguire le linee K contenenti ciascuna un numero intero. Ith integer è l'id della città in cui si trova attualmente la macchina .
Formato di uscita Stampa in una singola riga il tempo minimo richiesto a interrompe la connessione tra le macchine.
Esempio Ingresso
5 3 2 1 8 1 0 5 2 4 5 1 3 4 2 4 0
Esempio di output
10
Spiegazione Neo può distruggere la strada che collega città 2 e la città 4 su peso 5, e la strada che collega città 0 e città 1 di peso 5. Come è possibile distruggere una sola strada alla volta, il tempo totale minimo richiesto è 10 unità di tempo. Dopo aver distrutto queste strade, nessuna delle macchine può raggiungere l'altra macchina tramite qualsiasi percorso.
Vincoli
2 <= N <= 100,000 2 <= K <= N 1 <= time to destroy a road <= 1000,000
Qualcuno può dare idea di come affrontare la soluzione.
Ecco un suggerimento: se ci sono i vertici di 'N' e i bordi di' N-1', e il grafico è ancora connesso (non ci sono "isole"), il grafico è una * linea * *. –
Il tuo commento sulla mia risposta è stato corretto - le condizioni di cui sopra non implicano un grafico lineare. Per il momento ho cancellato la mia risposta. –