#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 | #64225613 | Utilizator | |
| Fișier | dijkstra.cpp | Dimensiune | 10.82 KB |
| Data încărcării | 23 Aprilie 2026, 21:04 | Scor/rezultat | Eroare de compilare |
dijkstra.cpp:33:21: error: extended character → is not valid in an identifier 33 | while(f >> x >> y); → citește până la finalul fișierului, DAR fără să execute nimic | ^ dijkstra.cpp:50:30: error: extended character → is not valid in an identifier 50 | Matricea a nu e inițializată → va avea valori random | ^ dijkstra.cpp:129:17: error: extended character — is not valid in an identifier 129 | E mult mai bine — ai rezolvat problema cu while 👍 Dar mai sunt câteva lucruri importante de corectat, mai ales dacă vrei să folosești asta pentru Dijkstra. | ^ dijkstra.cpp:159:30: error: extended character „ is not valid in an identifier 159 | pentru Dijkstra ai nevoie de „infinit” | ^ dijkstra.cpp:159:30: error: extended character ” is not valid in an identifier dijkstra.cpp:189:1: error: extended character ✅ is not valid in an identifier 189 | ✅ Varianta corectă: | ^ dijkstra.cpp:226:91: error: extended character — is not valid in an identifier 226 | Dacă vrei, următorul pas e să-ți arăt exact cum implementezi Dijkstra peste matricea asta — acum e momentul perfect 👍 | ^ dijkstra.cpp:316:21: error: extended character — is not valid in an identifier 316 | Ești foarte aproape — implementarea ta de Dijkstra e în mare corectă. Dar sunt câteva probleme subtile care îți pot da rezultate greșite sau chiar comportament nedefinit. | ^ dijkstra.cpp:342:28: error: extended character → is not valid in an identifier 342 | vei folosi o valoare veche → bug grav | ^ dijkstra.cpp:363:26: error: extended character → is not valid in an identifier 363 | dacă ai drumuri mai mari → overflow logic | ^ dijkstra.cpp:388:1: error: extended character ✔ is not valid in an identifier 388 | ✔ corect, DAR: | ^ dijkstra.cpp:399:1: error: extended character ✔ is not valid in an identifier 399 | ✔ merge, dar mai corect este: | ^ dijkstra.cpp:406:1: error: extended character ✅ is not valid in an identifier 406 | ✅ Variantă corectată (partea critică) | ^ dijkstra.cpp:441:1: error: extended character ✔ is not valid in an identifier 441 | ✔ structură corectă | ^ dijkstra.cpp:443:1: error: extended character ✔ is not valid in an identifier 443 | ✔ logică bună | ^ dijkstra.cpp:445:1: error: extended character ❗ is not valid in an identifier 445 | ❗ dar are bug-uri clasice (inițializare + cazuri limită) | ^ dijkstra.cpp:456:41: error: extended character — is not valid in an identifier 456 | Ai dreptate să te concentrezi pe citire — problema ta principală NU e Dijkstra, ci faptul că programul nu pornește corect din cauza citirii. | ^ dijkstra.cpp:470:27: error: extended character → is not valid in an identifier 470 | buclele nu rulează corect → pare „blocat” | ^ dijkstra.cpp:470:34: error: extended character „ is not valid in an identifier 470 | buclele nu rulează corect → pare „blocat” | ^ dijkstra.cpp:470:34: error: extended character ” is not valid in an identifier dijkstra.cpp:472:1: error: extended character ✅ is not valid in an identifier 472 | ✅ Fix minim (IMPORTANT) | ^ dijkstra.cpp:490:35: error: extended character „ is not valid in an identifier 490 | 🔴 A treia problemă: posibil loop „fals” | ^ dijkstra.cpp:490:35: error: extended character ” is not valid in an identifier dijkstra.cpp:499:1: error: extended character → is not valid in an identifier 499 | → comportament imprevizibil | ^ dijkstra.cpp:506:1: error: extended character ✅ is not valid in an identifier 506 | ✅ Varianta minim corectată (DOAR ce te bloca) | ^ dijkstra.cpp:543:6: error: extended character „ is not valid in an identifier 543 | Dacă „nu citește nimic”: | ^ dijkstra.cpp:543:18: error: extended character ” is not valid in an identifier 543 | Dacă „nu citește nimic”: | ^ dijkstra.cpp:547:1: error: extended character ❗ is not valid in an identifier 547 | ❗ fin nu e valid | ^ dijkstra.cpp:551:1: error: extended character ⚠ is not valid in an identifier 551 | ⚠️ V neinițializat | ^ dijkstra.cpp: In function ‘int main()’: dijkstra.cpp:13:5: warning: this ‘while’ clause does not guard... [-Wmisleading-indentation] 13 | while(f>>x>>y); | ^~~~~ dijkstra.cpp:14:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘while’ 14 | { | ^ dijkstra.cpp: At global scope: dijkstra.cpp:23:3: error: ‘ce’ does not name a type 23 | } ce am gresit? | ^~ dijkstra.cpp:30:1: error: ‘Semnul’ does not name a type 30 | Semnul ; de la final închide bucla while imediat. Practic, bucla nu face nimic, iar blocul de cod de după {} nu mai aparține lui while, ci se execută o singură dată. | ^~~~~~ dijkstra.cpp:30:10: error: ‘de’ does not name a type 30 | Semnul ; de la final închide bucla while imediat. Practic, bucla nu face nimic, iar blocul de cod de după {} nu mai aparține lui while, ci se execută o singură dată. | ^~ dijkstra.cpp:30:110: error: ‘nu’ does not name a type 30 | Semnul ; de la final închide bucla while imediat. Practic, bucla nu face nimic, iar blocul de cod de după {} nu mai aparține lui while, ci se execută o singură dată. | ^~ dijkstra.cpp:33:21: error: ‘→’ does not name a type 33 | while(f >> x >> y); → citește până la finalul fișierului, DAR fără să execute nimic | ^ dijkstra.cpp:41:1: error: ‘se’ does not name a type 41 | se execută o singură dată, cu ultimele valori citite (sau chiar valori invalide) | ^~ dijkstra.cpp:49:1: error: ‘Alte’ does not name a type 49 | Alte observații importante: | ^~~~ dijkstra.cpp:53:13: error: ‘i’ does not name a type 53 | for(int i=1;i<=n;i++) | ^ dijkstra.cpp:53:18: error: ‘i’ does not name a type 53 | for(int i=1;i<=n;i++) | ^ dijkstra.cpp:54:17: error: ‘j’ does not name a type 54 | for(int j=1;j<=n;j++) | ^ dijkstra.cpp:54:22: error: ‘j’ does not name a type 54 | for(int j=1;j<=n;j++) | ^ dijkstra.cpp:56:1: error: ‘Dacă’ does not name a type 56 | Dacă lucrezi la Dijkstra, de obicei: | ^~~~ dijkstra.cpp:67:10: error: redefinition of ‘std::ifstream f’ 67 | ifstream f("dijkstra.in"); | ^ dijkstra.cpp:6:10: note: ‘std::ifstream f’ previously declared here 6 | ifstream f("dijkstra.in"); | ^ dijkstra.cpp:68:10: error: redefinition of ‘std::ofstream g’ 68 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:7:10: note: ‘std::ofstream g’ previously declared here 7 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:70:5: error: redefinition of ‘int n’ 70 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:5: note: ‘int n’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:70:7: error: redefinition of ‘int p’ 70 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:7: note: ‘int p’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:70:9: error: redefinition of ‘int a [101][101]’ 70 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:9: note: ‘int a [101][101]’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:70:21: error: redefinition of ‘int viz [101]’ 70 | int n,p,a[101][101],viz[101],x,y; | ^~~ dijkstra.cpp:8:21: note: ‘int viz [101]’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^~~ dijkstra.cpp:70:30: error: redefinition of ‘int x’ 70 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:30: note: ‘int x’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:70:32: error: redefinition of ‘int y’ 70 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:32: note: ‘int y’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:72:5: error: redefinition of ‘int main()’ 72 | int main() | ^~~~ dijkstra.cpp:9:5: note: ‘int main()’ previously defined here 9 | int main() | ^~~~ dijkstra.cpp:94:1: error: ‘Dacă’ does not name a type 94 | Dacă vrei, pot să-ți verific și implementarea completă pentru Dijkstra (acum ai doar citirea grafului). | ^~~~ dijkstra.cpp:101:10: error: redefinition of ‘std::ifstream f’ 101 | ifstream f("dijkstra.in"); | ^ dijkstra.cpp:6:10: note: ‘std::ifstream f’ previously declared here 6 | ifstream f("dijkstra.in"); | ^ dijkstra.cpp:102:10: error: redefinition of ‘std::ofstream g’ 102 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:7:10: note: ‘std::ofstream g’ previously declared here 7 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:104:5: error: redefinition of ‘int n’ 104 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:5: note: ‘int n’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:104:7: error: redefinition of ‘int p’ 104 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:7: note: ‘int p’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:104:9: error: redefinition of ‘int a [101][101]’ 104 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:9: note: ‘int a [101][101]’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:104:21: error: redefinition of ‘int viz [101]’ 104 | int n,p,a[101][101],viz[101],x,y; | ^~~ dijkstra.cpp:8:21: note: ‘int viz [101]’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^~~ dijkstra.cpp:104:30: error: redefinition of ‘int x’ 104 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:30: note: ‘int x’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:104:32: error: redefinition of ‘int y’ 104 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:32: note: ‘int y’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:106:5: error: redefinition of ‘int main()’ 106 | int main() | ^~~~ dijkstra.cpp:9:5: note: ‘int main()’ previously defined here 9 | int main() | ^~~~ dijkstra.cpp:127:2: error: ‘acum’ does not name a type 127 | }acum? | ^~~~ dijkstra.cpp:139:1: error: ‘Dacă’ does not name a type 139 | Dacă fișierul conține linii de forma x y c, atunci trebuie: | ^~~~ dijkstra.cpp:145:1: error: ‘Altfel’ does not name a type 145 | Altfel riști: | ^~~~~~ dijkstra.cpp:155:1: error: ‘Problema’ does not name a type 155 | Problema: | ^~~~~~~~ dijkstra.cpp:165:1: error: ‘a’ does not name a type 165 | a[i][j] = INF; | ^ dijkstra.cpp:166:1: error: ‘🟡’ does not name a type 166 | 🟡 3. Lipsesc valorile pe diagonală | ^~ dijkstra.cpp:170:1: error: ‘Adaugă’ does not name a type 170 | Adaugă: | ^~~~~~ dijkstra.cpp:172:13: error: ‘i’ does not name a type 172 | for(int i=1;i<=n;i++) | ^ dijkstra.cpp:172:18: error: ‘i’ does not name a type 172 | for(int i=1;i<=n;i++) | ^ dijkstra.cpp:174:1: error: ‘🟡’ does not name a type 174 | 🟡 4. Nu folosești p | ^~ dijkstra.cpp:178:1: error: ‘dar’ does not name a type 178 | dar nu folosești p. | ^~~ dijkstra.cpp:182:13: error: ‘i’ does not name a type 182 | for(int i=1;i<=p;i++) | ^ dijkstra.cpp:182:18: error: ‘i’ does not name a type 182 | for(int i=1;i<=p;i++) | ^ dijkstra.cpp:187:1: error: ‘Asta’ does not name a type 187 | Asta e chiar mai sigur decât while. | ^~~~ dijkstra.cpp:194:10: error: redefinition of ‘std::ifstream f’ 194 | ifstream f("dijkstra.in"); | ^ dijkstra.cpp:6:10: note: ‘std::ifstream f’ previously declared here 6 | ifstream f("dijkstra.in"); | ^ dijkstra.cpp:195:10: error: redefinition of ‘std::ofstream g’ 195 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:7:10: note: ‘std::ofstream g’ previously declared here 7 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:197:5: error: redefinition of ‘int n’ 197 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:5: note: ‘int n’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:197:7: error: redefinition of ‘int p’ 197 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:7: note: ‘int p’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:197:9: error: redefinition of ‘int a [101][101]’ 197 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:9: note: ‘int a [101][101]’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:197:21: error: redefinition of ‘int viz [101]’ 197 | int n,p,a[101][101],viz[101],x,y; | ^~~ dijkstra.cpp:8:21: note: ‘int viz [101]’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^~~ dijkstra.cpp:197:30: error: redefinition of ‘int x’ 197 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:30: note: ‘int x’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:197:32: error: redefinition of ‘int y’ 197 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:8:32: note: ‘int y’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:199:5: error: redefinition of ‘int main()’ 199 | int main() | ^~~~ dijkstra.cpp:9:5: note: ‘int main()’ previously defined here 9 | int main() | ^~~~ dijkstra.cpp:226:1: error: ‘Dacă’ does not name a type 226 | Dacă vrei, următorul pas e să-ți arăt exact cum implementezi Dijkstra peste matricea asta — acum e momentul perfect 👍 | ^~~~ dijkstra.cpp:233:10: error: redefinition of ‘std::ofstream g’ 233 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:7:10: note: ‘std::ofstream g’ previously declared here 7 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:235:21: error: redefinition of ‘int n’ 235 | int cost[100][100], n, nod_start, i, j, D[100], T[100], V[100], dr_min, nod_urm; | ^ dijkstra.cpp:8:5: note: ‘int n’ previously declared here 8 | int n,p,a[101][101],viz[101],x,y; | ^ dijkstra.cpp:285:5: error: redefinition of ‘int main()’ 285 | int main() | ^~~~ dijkstra.cpp:9:5: note: ‘int main()’ previously defined here 9 | int main() | ^~~~ dijkstra.cpp:316:1: error: ‘Ești’ does not name a type 316 | Ești foarte aproape — implementarea ta de Dijkstra e în mare corectă. Dar sunt câteva probleme subtile care îți pot da rezultate greșite sau chiar comportament nedefinit. | ^~~~ dijkstra.cpp:322:1: error: ‘dar’ does not name a type 322 | dar nu îl initializezi. Asta înseamnă că poate conține valori random. | ^~~ dijkstra.cpp:326:13: error: ‘i’ does not name a type 326 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:326:21: error: ‘i’ does not name a type 326 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:328:1: error: ‘Pune’ does not name a type 328 | Pune asta în initializare() înainte de: | ^~~~ dijkstra.cpp:331:1: error: ‘🔴’ does not name a type 331 | 🔴 2. Problema cu nod_urm dacă nu există nod valid | ^~ dijkstra.cpp:336:1: error: expected unqualified-id before ‘for’ 336 | for (i = 1; i <= n; i++) | ^~~ dijkstra.cpp:336:13: error: ‘i’ does not name a type 336 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:336:21: error: ‘i’ does not name a type 336 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:347:1: error: ‘nod_urm’ does not name a type 347 | nod_urm = -1; | ^~~~~~~ dijkstra.cpp:349:1: error: expected unqualified-id before ‘for’ 349 | for (i = 1; i <= n; i++) | ^~~ dijkstra.cpp:349:13: error: ‘i’ does not name a type 349 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:349:21: error: ‘i’ does not name a type 349 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:356:1: error: expected unqualified-id before ‘if’ 356 | if (nod_urm == -1) break; // nu mai ai noduri accesibile | ^~ dijkstra.cpp:357:1: error: ‘🟡’ does not name a type 357 | 🟡 3. INF prea mic (9999) | ^~ dijkstra.cpp:361:9: error: found ‘:’ in nested-name-specifier, expected ‘::’ 361 | Problema: | ^ | :: dijkstra.cpp:361:1: error: ‘Problema’ does not name a type 361 | Problema: | ^~~~~~~~ dijkstra.cpp:368:1: error: ‘Și’ does not name a type 368 | Și în tot programul folosește INF. | ^~ dijkstra.cpp:388:1: error: ‘✔’ does not name a type 388 | ✔ corect, DAR: | ^ dijkstra.cpp:398:13: error: ‘j’ does not name a type 398 | for (j = 1; j <= n; j++) | ^ dijkstra.cpp:398:21: error: ‘j’ does not name a type 398 | for (j = 1; j <= n; j++) | ^ dijkstra.cpp:401:13: error: ‘j’ does not name a type 401 | for (j = 1; j < n; j++) | ^ dijkstra.cpp:401:20: error: ‘j’ does not name a type 401 | for (j = 1; j < n; j++) | ^ dijkstra.cpp:409:1: error: expected unqualified-id before ‘for’ 409 | for (i = 1; i <= n; i++) | ^~~ dijkstra.cpp:409:13: error: ‘i’ does not name a type 409 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:409:21: error: ‘i’ does not name a type 409 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:412:1: error: ‘V’ does not name a type 412 | V[nod_start] = 1; | ^ dijkstra.cpp:414:1: error: expected unqualified-id before ‘for’ 414 | for (j = 1; j < n; j++) | ^~~ dijkstra.cpp:414:13: error: ‘j’ does not name a type 414 | for (j = 1; j < n; j++) | ^ dijkstra.cpp:414:20: error: ‘j’ does not name a type 414 | for (j = 1; j < n; j++) | ^ dijkstra.cpp:438:1: error: ‘💡’ does not name a type 438 | 💡 Concluzie | ^~ dijkstra.cpp:463:10: error: redefinition of ‘std::ofstream g’ 463 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:7:10: note: ‘std::ofstream g’ previously declared here 7 | ofstream g("dijkstra.out"); | ^ dijkstra.cpp:464:1: error: ‘Dacă’ does not name a type 464 | Dacă dijkstra.in nu există în folderul corect, atunci: | ^~~~ dijkstra.cpp:466:24: error: ‘NU’ does not name a type 466 | fin >> n >> nod_start; NU citește nimic | ^~ dijkstra.cpp:480:1: error: ‘sau’ does not name a type 480 | sau mai simplu debug: | ^~~ dijkstra.cpp:483:1: error: ‘🔴’ does not name a type 483 | 🔴 A doua problemă: nu inițializezi V | ^~ dijkstra.cpp:488:13: error: ‘i’ does not name a type 488 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:488:21: error: ‘i’ does not name a type 488 | for (i = 1; i <= n; i++) | ^ dijkstra.cpp:490:1: error: ‘🔴’ does not name a type 490 | 🔴 A treia problemă: posibil loop „fals” | ^~ dijkstra.cpp:493:13: error: ‘j’ does not name a type 493 | for (j = 1; j <= n; j++) | ^ dijkstra.cpp:493:21: error: ‘j’ does not name a type 493 | for (j = 1; j <= n; j++) | ^ dijkstra.cpp:504:1: error: expected unqualified-id before ‘...’ token 504 | ... | ^~~ dijkstra.cpp:506:1: error: ‘✅’ does not name a type 506 | ✅ Varianta minim corectată (DOAR ce te bloca) | ^~ dijkstra.cpp:525:1: error: ‘și’ does not name a type 525 | și în main(): | ^~ dijkstra.cpp:527:13: error: ‘j’ does not name a type 527 | for (j = 1; j <= n; j++) | ^ dijkstra.cpp:527:21: error: ‘j’ does not name a type 527 | for (j = 1; j <= n; j++) | ^
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ă.