#588
Se dă un graf orientat ponderat – în care fiecare arc are asociat un cost, număr natural strict pozitiv, și un nod p. Să se determine, folosind algoritmul lui Dijkstra, costul minim al drumului de la p la fiecare nod al grafului.
| Problema | Dijkstra | Operații I/O |
dijkstra.in/dijkstra.out
|
|---|---|---|---|
| Limita timp | 0.1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
| Id soluție | #64225617 | Utilizator | |
| Fișier | dijkstra.cpp | Dimensiune | 1.06 KB |
| Data încărcării | 23 Aprilie 2026, 21:05 | Scor/rezultat | Eroare de compilare |
dijkstra.cpp:1:20: warning: extra tokens at end of #include directive 1 | #include <fstream> using namespace std; ifstream fin("dijkstra.in"); ofstream g("dijkstra.out"); int cost[100][100], n, nod_start, i, j, D[100], T[100], V[100], dr_min, nod_urm; void initializare() { fin >> n >> nod_start; for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) fin >> cost[i][j]; for (i = 1; i <= n; i++) { D[i] = cost[nod_start][i]; T[i] = nod_start; } V[nod_start] = 1; T[nod_start] = 0; fin.close(); } void afisare() { int dr[100], lung; for (i = 1; i <= n; i++) if (i != nod_start) { g << "Costul drumului de cost minim de la " << nod_start << " la " << i << " este: " << D[i] << endl; int x = i; lung = 0; while (T[x]) { lung++; dr[lung] = x; x = T[x]; } lung++; dr[lung] = nod_start; for (j = lung; j >= 1; j--) g << dr[j] << " "; g << endl; } } int main() { initializare(); for (j = 1; j <= n; j++) { int dmin = 9999; for (i = 1; i <= n; i++) if (V[i] == 0 && dmin > D[i]) { dmin = D[i]; nod_urm = i; } V[nod_urm] = 1; for (i = 1; i <= n; i++) if (V[i] == 0 && D[i] > dmin + cost[nod_urm][i]) { T[i] = nod_urm; D[i] = dmin + cost[nod_urm][i]; } } afisare(); return 0; } | ^~~~~ /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crt1.o: in function \`_start': (.text+0x1b): undefined reference to \`main' collect2: error: ld returned 1 exit status
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Dijkstra face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.