Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | bellmanford.in, bellmanford.out | Sursă | Arhiva Educationala |
Autor | Arhiva Educationala | Adăugată de | |
Timp execuţie pe test | 0.25 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Algoritmul Bellman-Ford
Se dă un graf orientat conex cu N noduri şi M muchii cu costuri. Definim un lanţ ca fiind un şir de noduri cu proprietatea că între oricare două noduri consecutive există o muchie. Costul unui lanţ este dat de suma costurilor muchiilor care unesc nodurile ce îl formează. Definim un ciclu ca fiind un lanţ cu proprietatea că primul element al său este egal cu ultimul.
Cerinţă
Să se determine dacă în graful dat există un ciclu de cost negativ. Dacă nu există, să se determine costul minim al unui lanţ de la nodul 1 la fiecare dintre nodurile 2, 3, ... , N-1, N.
Date de intrare
Fişierul de intrare bellmanford.in conţine pe prima linie numerele N şi $M cu semnificaţia din enunţ. Pe următoarele M linii se vor afla 3 numere A, B şi C cu semnificaţia că există o muchie de cost C de la nodul A la nodul B.
Date de ieşire
În fişierul de ieşire bellmanford.out se va afişa pe prima linie mesajul "Ciclu negativ!" dacă în graf există un astfel de ciclu sau, în caz contrar, N-1 numere separate printr-un spaţiu. Al i-lea număr va reprezenta costul minim al unui drum minim de la nodul 1 la nodul i+1.
Restricţii
- 1 ≤ N ≤ 50 000.
- 1 ≤ M ≤ 250 000.
- Costurile muchiilor sunt numere întregi cel mult egale in modul cu 1 000.
Exemplu
bellmanford.in | bellmanford.out |
---|---|
This is some text written on multiple lines. | This is another text written on multiple lines. |
Explicaţie
...