Pagini: 1 [2] 3 4 ... 8   În jos
  Imprimă  
Ajutor Subiect: 009 Algoritmul lui Dijkstra  (Citit de 117792 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #25 : Aprilie 07, 2008, 19:16:50 »

Se poate: http://infoarena.ro/job_detail/154087?action=view-source
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #26 : Aprilie 07, 2008, 19:22:07 »

e BF cu heapuri?
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #27 : Aprilie 07, 2008, 19:27:49 »

vectorii cu "heap" nu sunt folositi si probabil au ramas de la sursa in care a facut dijkstra
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #28 : Aprilie 22, 2008, 21:04:14 »

am implementat cu Bellman-Ford cu coada dar iau doar 30 (ok pe 1 2 si 8 , 5 wa si 2 TLE <astea se rezolva cu parsarea citirii>) si nu-mi dau seama unde crapa... ma poate ajuta cineva?

http://infoarena.ro/job_detail/183901?action=view-source
Memorat
amadaeus
Client obisnuit
**

Karma: 28
Deconectat Deconectat

Mesaje: 93



Vezi Profilul
« Răspunde #29 : Aprilie 22, 2008, 21:13:08 »

In principiu, bagi un nod in coada numai daca nu este deja acolo. Vad ca tu bagi un nod in coada la fiecare relaxare.
Nu stiu daca WA e de la asta, dar.. pune si conditia asta prin sursa Wink
Memorat

"one of these days I'm going to cut you into little pieces..."
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #30 : Aprilie 23, 2008, 09:02:52 »

Nup nu e de la asta. cu chestia ta iau doar 10 puncte pe testul 8. Eu bag un nod in coada de mai multe ori doar daca costul obtinut pana atunci este mai mic decat costul obtinut mai devreme, si atunci trebuie sa reactualizez si toti vecinii lui.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #31 : Aprilie 23, 2008, 10:32:44 »

Pai nu trebuie sa bagi un nod in coada decat daca nu este deja acolo.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
amadaeus
Client obisnuit
**

Karma: 28
Deconectat Deconectat

Mesaje: 93



Vezi Profilul
« Răspunde #32 : Aprilie 23, 2008, 10:42:05 »

M-am uitat inca o data peste sursa ta si am vazut ca tu tii o coada de structuri cu nodul si distanta pana la el. Am impresia ca aici complici lucrurile; eu propun urmatoarea varianta: tii un vector dist[ x ] in care retii distanta minima (pana in prezent) pana la nodul x, iar in coada bagi numai indicii nodurilor, nu si distantele. Din nou, bagi un nod in coada numai daca nu este deja acolo.

Asadar, transformarile intr-un pseudo-C Very Happy ar arata cam asa:
Cod:
coada.push( 1 );
incoada[1] = 1;

while( !coada.empty() ) {
u = coada.pop(), incoada[u] = 0;
for( v vecin al lui u )
if( dist[v] > dist[u] + cost(u,v) ) {
dist[v] = dist[u] + cost(u,v);
if( incoada[v] == 0 )
incoada[v] = 1, coada.push(v);
}
}
Memorat

"one of these days I'm going to cut you into little pieces..."
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #33 : Aprilie 23, 2008, 11:26:34 »

Am scris acum o sursa cu bellman-ford. Poti sa te uiti peste ea daca vrei.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
amadaeus
Client obisnuit
**

Karma: 28
Deconectat Deconectat

Mesaje: 93



Vezi Profilul
« Răspunde #34 : Aprilie 23, 2008, 11:36:36 »

 Surprised Sunt mai rapide streamurile decat ma asteptam... Eu am luat mai demult, pe aceeasi idee, 90 cu citire standard. La ONI se va folosi tot g++ 4.2?

LE: Nop, citat de pe site-ul oficial:
Citat
5. Linux    g++ 3.2.2    compilator pentru limbajul C++
Memorat

"one of these days I'm going to cut you into little pieces..."
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #35 : Aprilie 23, 2008, 12:57:56 »

@wefgef
nu prea stiu c++ si chestii cu push si iteratori

@amadaeus

dap. asta pt ca se foloseste evalul . campion care merge doar pe gcc vers 3. Sad
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #36 : Aprilie 23, 2008, 13:05:10 »

Pai de ce nu inveti? Crezi ca e asa mare filozofie? Smile

Exact, ce anume nu intelegi din sursa mea? Tongue
« Ultima modificare: Aprilie 23, 2008, 14:24:44 de către Andrei Grigorean » Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #37 : Aprilie 23, 2008, 13:11:29 »

cum e cu iteratorii
Memorat
amadaeus
Client obisnuit
**

Karma: 28
Deconectat Deconectat

Mesaje: 93



Vezi Profilul
« Răspunde #38 : Aprilie 23, 2008, 13:28:06 »

Iteratorii sunt un fel de pointeri, cu care poti parcurge un container (de exemplu un vector).
Iti recomand cartea "STL Tutorial and Reference Guide", de Musser, Derge si Saini - dupa bucata introductiva iti vei forma o parere destul de clara asupra STL-ului, iar acesta va fi un pas mare inainte Wink

Daca nu gasesti in alta parte, am uploadat-o aici.
Memorat

"one of these days I'm going to cut you into little pieces..."
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #39 : Aprilie 23, 2008, 14:23:21 »

 Applause amadaeus.

Ceea ce fac eu acolo cu iteratorul este parcurgerea listei de vecini. As fi putut sa fac asa:

Cod:
for (int i = 0; i < int(G[nod].size()); ++i)

iar in loc de it->first as fi avut G[nod][ i ].first si in loc de it->second as fi avut G[nod][ i ].second.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #40 : Aprilie 25, 2008, 18:10:29 »

Am reusit in sfarsit sa iau 100 dar cu citire cu streamuri ( cu citire in c imi crapa)... si testele par ciudate: imi crapa mozilla cand intru in ele

LE: gata... am scos 100 si cu citire in c (si 428 de ms pe cel mai mare test) cu bellman ford cu coada

http://infoarena.ro/job_detail/185953

si se pare ca sunt singurul cu c care a luat 100


deci se poate si in c

[editat de moderator: nu posta de mai multe ori consecutiv, foloseste edit]
« Ultima modificare: Aprilie 26, 2008, 15:33:49 de către Bogdan Tataroiu » Memorat
amadaeus
Client obisnuit
**

Karma: 28
Deconectat Deconectat

Mesaje: 93



Vezi Profilul
« Răspunde #41 : Aprilie 26, 2008, 14:56:06 »

Daca parsezi citirea, se poate in C si cu Dijkstra cu heapuri (http://infoarena.ro/job_detail/186013)
Memorat

"one of these days I'm going to cut you into little pieces..."
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #42 : Aprilie 26, 2008, 15:04:07 »

dap. si e chiar mai rapid cu heapuri. Dar eram primul care a luat 100 in c

http://infoarena.ro/monitor?task=dijkstra&&compiler=c&&score_begin=100

aici apar toti cu 100 in c pe dijkstra
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #43 : Aprilie 26, 2008, 15:31:23 »

oricum probabil exista destule surse trimise cu cpp care ar compila in c si ar lua 100  Eh?
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #44 : Mai 27, 2008, 07:11:07 »

@Airinei

Auzi, ma uitam la sursa ta ce e linkata din problema si vad ca folosesti set cand puteai folosi priority queue fara nici o problema. Nu folosesti nimic din avantajele setului aici ...

Si inca o chestie, cred ca faci chestii redundante pentru ca nu faci lazy deletion. Inainte de a folosi o valoare din heap poti sa testezi daca valoarea ce o folosesti in relaxari. Trebuie sa testezi if (val > d[ x ]) continue;
« Ultima modificare: Mai 27, 2008, 07:53:32 de către Stefan Istrate » Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #45 : Iunie 02, 2008, 08:43:46 »

am trimis de mai multe ori aceeasi sursa, a doua oara cu niste comentarii in ea,

http://infoarena.ro/job_detail/193067
http://infoarena.ro/job_detail/193068

si obtin timpi foarte diferiti... gen 500 si 472. stiam ca de obicei timpul poate varia cu cel mult 8 ms dar poate chiar asa de mult? Adica 30 de ms? Poate fi de la alocarea dinamica a memoriei?

Need help...
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #46 : Iunie 02, 2008, 13:44:42 »

E nesemnificativa diferenta Wink La problemele cu limite mari de timp (3-5 secunde) mi s-a intamplat sa am diferente pe aceeasi sursa de 50-100 ms.
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
mihai0110
Strain


Karma: 6
Deconectat Deconectat

Mesaje: 20



Vezi Profilul
« Răspunde #47 : Februarie 09, 2009, 18:20:48 »

am incercat cu bf cu coada si vad ca primesc tle desi sunt sub 0.5 sec  Confused

 10   472ms   4792kb   Time limit exceeded.   0

sau

 10   488ms   4788kb   Time limit exceeded.   0

in timp ce pe sursa lui wefgef

 10   488ms   4564kb   OK   10
 
« Ultima modificare: Februarie 09, 2009, 18:26:43 de către Bivol Mihai » Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #48 : Februarie 09, 2009, 18:38:59 »

Evaluatorul are o mica eroare in masurarea timpilor de executie afisati, dar fii sigur ca algoritmul tau este oprit atunci cand depaseste timpul.
Memorat
c_e_manu
Nu mai tace
*****

Karma: 56
Deconectat Deconectat

Mesaje: 243



Vezi Profilul
« Răspunde #49 : Februarie 26, 2009, 18:26:07 »

poate cineva sa arunce o privire aici si sa-mi spuna unde e greseala... am incercat in nu mai stiu cate feluri si tot nu reusesc sa gasesc ce nu e in regula... mersi! Smile

http://infoarena.ro/job_detail/267069

LE: am marit coada si intra pe 9 teste... pe al 10-lea iau TLE... o sa implementez coada dinamic si atunci sper sa intre... are totusi cineva vreun pont cum sa nu bag de mai multe ori acelasi nod in coada, in afara de STL?
« Ultima modificare: Februarie 26, 2009, 19:24:15 de către Emanuel Cinca » Memorat
Pagini: 1 [2] 3 4 ... 8   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines