infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva educationala => Subiect creat de: Filip Cristian Buruiana din Decembrie 06, 2008, 19:43:55



Titlul: 013 Parcurgere in latime
Scris de: Filip Cristian Buruiana din Decembrie 06, 2008, 19:43:55
Aici puteti discuta despre problema Parcurgere in latime (http://infoarena.ro/problema/bfs).


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Florian Marcu din Decembrie 07, 2008, 22:14:20
Iau 80 la pb asta. E destul de fustrant ca nu fac o parcurgere in latime de 100 de puncte. Faza e ca iau memory limit exceeded... Intr-adevar, nu sterg elementele din coada.. Dar totusi... nici in sursa asta http://infoarena.ro/job_detail/223158?action=view-source nu vad nicaieri vreo instructiune care sa stearga elementul extras, din coada. Care e diferenta? [ sursa mea: http://infoarena.ro/job_detail/228490?action=view-source ] Eu am lucrat cu liste simplu inlantuite...

ps: nu stiu stl, si desi nu mi-ar fi greu sa invat 2-3 instructiuni ca sa-mi iasa problema asta, is curios de ce nu-mi intra si programul meu, in memorie...  :-k


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Paul-Dan Baltescu din Decembrie 07, 2008, 22:20:32
Sursa ta iese din memorie pentru ca aloci mai mult de 16 Mb. Pentru fiecare vecin tii 2 informatii (tipul vecinului si pointerul spre vecinul urmator) => 2 * 4 bytes. Cum fiecare muchie apare de doua ori (pentru fiecare sens), in total pentru fiecare muchie ai 2 * 2 * 4  = 16 bytes.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Florian Marcu din Decembrie 08, 2008, 14:41:44
Sursa ta iese din memorie pentru ca aloci mai mult de 16 Mb. Pentru fiecare vecin tii 2 informatii (tipul vecinului si pointerul spre vecinul urmator) => 2 * 4 bytes. Cum fiecare muchie apare de doua ori (pentru fiecare sens), in total pentru fiecare muchie ai 2 * 2 * 4  = 16 bytes.

De fapt, folosesc pt fiecare muchie 2*4 = 8 bytes [ ca e graf orientat ]. In fine... O sa implementez in stl. Ms pentru explicatii!  :thumbup:


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Iacob Eduard din Decembrie 09, 2008, 00:16:44
Fara sa invat STL,nu pot sa iau 100p ?


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Gheorghe Cosmin din Decembrie 09, 2008, 07:26:12
daca inteleg eu bine problema, si nu ai memorie suficienta pentru o lista inlantuita, trebuie sa tii listele de adiacenta prin vectori alocati dinamic. vezi articolul cu multe smenuri; acolo este un smen cu malloc si citirea fisierului de doua ori, la grafuri cu liste de adiacenta


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Iacob Eduard din Decembrie 09, 2008, 09:09:55
Am incercat si asa,dar imi iese din timp .  :D
Faza e ca la urma am asa:
-for(int i=1;i<=n;i++)
    scrie cost(i);
si imi ia cam mult timp.Nu este vreo functie care sa imi scrie in fisierul de iesire direct tot vectorul?


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Bozianu Ana din Decembrie 09, 2008, 14:06:09
Confirm si eu aceeasi problema la ultimele doua teste.
Cu listele de vecini cu pointeri MLE, cu smenul cu recitirea fisierului de intrare TLE.
Concluzie: rusine sa-mi fie ca nu am invatat macar vectorii din STL.
Intrebare nevinovata: parsarea citirii ar putea imbunatati timpul?


L.E. Cu modificarea limitei de memorie merge folosind pointeri. 10x paul. :)


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Paul-Dan Baltescu din Decembrie 09, 2008, 17:38:59
Limita de memorie a fost modificata la 32768 kbytes si problema a fost reevaluata. Imi cer scuze pentru eventualele neplaceri.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Andrei Grigorean din Decembrie 09, 2008, 22:25:33
Ar trebui sa aveti grija la problemele astea cand fixati limitele de timp si memorie. Scopul lor este sa invete lumea algoritmii, nu jmenuri de implementare. Ati putea cere cuiva sa va ajute si cu o sursa in pascal, sa fiti siguri ca intra :)


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Cosmin Negruseri din Decembrie 10, 2008, 01:46:26
Mda, si eu as zice sa mariti limitele. Atata timp cat algoritmul e corect si nu e implementat foarte prost ar trebui sa ia 100 pe problema. Nu tre sa ne aratam muschii :) mai ales la arhiva educationala.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Emanuel Cinca din Februarie 17, 2009, 19:51:05
am si eu o intrebare... la problema asta, pe PC-ul meu, folosind vector din STL iau Segmentation Fault, chiar si pe sursa de la linkul cu 100 de pcte... trebuie sa caut un compilator mai nou?? am incercat cu compilatoarele de la mingw si rhide downloadate de la linkurile date de voi... ???

mai exact, in partea asta de cod:
Cod:
for (j = 0; j < G[S[i]]; j++)	
if (Cost[A[S[i]][j]] == -1)//aici
dupa ce a-ul a fost declarat:
Cod:
vector<int> a[MaxN]

daca nu e voie sa incerc sa accesez a[var1][var2], cum de sursa aceea a  luat 100? ???


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Florin Lupan din Martie 11, 2009, 09:37:46
Ii misto eu folosesc info arena pentru pregatire la olimpiada judeteana :banana:


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: alexandru din Martie 11, 2009, 19:33:14
Citat
 am si eu o intrebare... la problema asta, pe PC-ul meu, folosind vector din STL iau Segmentation Fault, chiar si pe sursa de la linkul cu 100 de pcte... trebuie sa caut un compilator mai nou?? am incercat cu compilatoarele de la mingw si rhide downloadate de la linkurile date de voi...
 
posibil sa fie compilatorul devina ..........mie imi merge perfect :D  .  Incearca fara vectori STL, folosind Lista de adiacenta alocata dinamica :D
ps :incercat  cu Borland C++ 5.01 ,dar daca merge pe el merge pe orice garantez :P


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Emanuel Cinca din Martie 11, 2009, 22:08:26
daca te uitai, ai fii observat ca problema am rezolvat-o de ceva vreme... nelamurirea cu vectorii STL ramane... si da, am incercat cu liste de adiacenta, dar mi se pare mai simpla varianta ce foloseste STL... daca cineva are timp si chef sa ma lamureasca, astept PM... mersi! :ok:


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Lazari Mihai din Aprilie 07, 2009, 15:52:44
Mi-a luat cam mult timp ca sa obtin 100 de puncte la problema asta(in Free Pascal)  :D. Luam TLE la ultimele 2 teste. Am modificat de o multime de ori sursa pina am ajuns la o sursa fara nici o procedura si... acelasi lucru: 80p. Mai apoi mi-a venit o ideie: sa nu eliberez memoria folosita(cu dispose) si am acumulat 100p. cu sursa initiala  :shock: :yahoo:


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Florin Marius Popescu din Septembrie 13, 2009, 12:22:12
salut , am si eu o problema ... pe aceeasi sursa am primit 90 de pct, am trimis-0 iar si am primit 80 de puncte.... toata treaba tine de timp , ca depasheste timpu. Daca o trimit pe seara poate obtin 100 ?
 help plss

   poate e site ul incarcat si compilatoru numai ruleaza la parametri optimi si deaia face asa .   ms


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Andrei Grigorean din Septembrie 13, 2009, 14:01:51
Am modificat limita de timp la 2.2 secunde si am reevaluat.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Florin Marius Popescu din Septembrie 13, 2009, 14:49:54
gata ms :D


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Danci Emanuel Sebastian din Februarie 12, 2010, 10:52:14
Se poate uita cineva sa vada de ce iau SIGSEGV pe toate testele? http://infoarena.ro/job_detail/395124


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: George Popoiu din Februarie 12, 2010, 11:22:05
Trebuie sa aloci coada mult mai mare. Nu iti ajunge doar de 100000, pentru ca ai 1 mil de muchii maxim, si de aia iei KBS .

Mai bine aloc-o cu STL.

Cod:
queue<int> Q;
Q.push(a); //adaugi in coada
Q.front(); //interoghezi sa vezi care este primul element
Q.pop(); //scoti primul element din coada


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Danci Emanuel Sebastian din Februarie 12, 2010, 12:29:43
Acelasi lucru da si cu STL`u  ](*,)


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Mihai Calancea din Februarie 12, 2010, 17:47:02
Tu faci o confuzie :trebuie sa faci BFS (Breadth First Search) , dar crezi ca se numeste  DFS ( Depth First Search , care nu te ajuta aici) . Foarte mult nu te-ar fi afectat daca n-ai fi numit si fisierele dfs.in , dfs.out :) De-aici signalul.

@George
Pai , de ce ? Doar nu baga muchii in coada.

L.E. Si btw , parcurgerea in latime iti asigura faptul ca daca nod1 a fost procesat inainte de nod2 , d[nod1] < d[nod2]. Deci , cu alte cuvinte d[nod1] , odata calculat ,  nu va mai fi schimbat in viitor. E destul sa verifici doar daca d[nod] == -1 inainte sa-l bagi in coada. Ce faci tu acolo e defapt Bellman - Ford .


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Mihai Calancea din Februarie 12, 2010, 18:33:54
Nu inteleg ce vrei sa spui. Daca bagi maxim N (in total) noduri intr-o coada , back nu va trece de N. Si front nu va trece de back.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: George Popoiu din Februarie 12, 2010, 18:40:23
Asa e, scuze  :?


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Mircea Dima din Februarie 12, 2010, 18:48:27
La BFS tu adaugi in coada fiecare nod cel mult o data! Atunci coada are nevoie de N elemente!
Probabil se confunda BFS cu Bellman-Ford cu coada, cand un nod e introdus in coada de mai multe ori!!!


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Danci Emanuel Sebastian din Februarie 12, 2010, 19:57:40
ms @klamathix


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Neagu Bogdan Ioan din Iunie 22, 2010, 19:30:21
ceva idee de rezolvare in pascal? in c am vazut ceva ciudat...un fel de record..vector..semimatrice habar nam cu stl(sau std ziceati voi pe aici...) dar in pascal nu stiu daca exista asa ceva? ceva poate alocare dinamica sau nu inteleg...


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: SAlexandru din Iunie 22, 2010, 19:34:58
Se cheama STL :-'
Am facut o filtrare dupa sursele din pascal care au luat 100pct poate te ajuta http://infoarena.ro/monitor?task=bfs&compiler=fpc&score_begin=100 :)


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Caraman Sabina din Noiembrie 28, 2010, 12:54:10
Buna,

mi-ati putea spune cum vad testele de la problema parcurgere in latime?


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Simoiu Robert din Noiembrie 28, 2010, 14:54:10
Pe fondul galben ai : De asemenea, poti vedea si testele accesand atasamentele. Dai click pe el si ai acolo testele . ( uite aici un link, http://infoarena.ro/problema/bfs?action=attach-list ) . Test.in inseamna input, iar Test.ok inseamna ce trebuie sa afiseze programul.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Alexandru-Iancu Caragicu din Martie 04, 2011, 16:48:33
Mie-mi scrie la "scorul tau in arhiva" N/A desi am ultima sursa trimisa are 100 de puncte.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Simoiu Robert din Martie 04, 2011, 16:49:44
In arhiva educationala, nu iti arata scorul obtinut, aceasta facilitate va fi adaugata doar la IA 3.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Alexandru-Iancu Caragicu din Martie 04, 2011, 16:58:55
Si ce e de preferat cand lucrezi cu cozi?
deque sau queue?


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Petru Trimbitas din Martie 04, 2011, 17:19:07
Si ce e de preferat cand lucrezi cu cozi?
deque sau queue?
Depinde de ce ai nevoie. Daca la un capat doar adaugi si la celalalt doar stergi atunci foloseste queue :D


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Alexandru-Iancu Caragicu din Martie 04, 2011, 17:42:32
Cum se citesc numerele din fisierul de iesire la evaluare?
Ca am vazut ca daca afisezi cu format " %i" in loc de "%i ", iei 0 in loc de 100.
Adica daca erau string-uri era clar ca conta. Dar vad ca si la numere conteaza daca afisezi un spatiu in fata.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: FMI-M2 Marius Melemciuc din Noiembrie 13, 2011, 19:11:21
Care credeti ca ar fi cauza de iau time limit exceeded?Implementare cu STL.http://infoarena.ro/job_detail/633394?action=view-source


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Sorin Rita din Noiembrie 13, 2011, 19:49:50
Nu ai complexitatea buna. Tu faci cate un bfs pt fiecare nod. Ideea e sa il faci doar odata pt toate nodurile si retii intr-un vector rezultatele. Datele de intrare fiind mari s-ar putea sa ajute si citirea cu streamuri. Si apropo, sper sa nu gresesc, dar nu are niciun efect acel long  :-'


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Mihai Visuian din Iunie 21, 2012, 10:09:54
Am si eu o nelamurire. Am de exemplu N=4(nr noduri) si M=3(nr drumuri), iar drumurile sunt asa:
1 2
1 3
4 1
Inteleg ca daca adaug fiecarui nod toti vecinii, adica v[ x ].push_back(y) si v[ y ].push_back(x), irosesc multa memorie, dar daca dau doar v[ x ].push_back(y) si fac BFS din nodul 1, nu risc sa nu treaca prin nodul 4??? :-s


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Mihai Calancea din Iunie 21, 2012, 13:05:06
Nu irosesti memorie. E necesar sa le tii pe ambele directii.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: CHIRILA ADRIAN din Octombrie 31, 2013, 21:50:19
Imi poate explica cineva de ce iau Killed by signal pe toate testele..dupa calculele mele nu am depasit memoria disponibila...sursa:http://www.infoarena.ro/job_detail/1019769?action=view-source (http://www.infoarena.ro/job_detail/1019769?action=view-source)


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: George Marcus din Noiembrie 01, 2013, 07:36:27
Citat
2 ≤ N ≤ 100 000

Citat
#define Nmax 1000


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: CHIRILA ADRIAN din Noiembrie 01, 2013, 12:35:41
http://www.infoarena.ro/job_detail/1019765?action=view-source (http://www.infoarena.ro/job_detail/1019765?action=view-source)-aici am pus 5000..si tot aceiasi chestie e.Nu ar trebui sa prind cateva teste?


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: George Marcus din Noiembrie 01, 2013, 16:18:00
Poate nu exista astfel de teste. De ce nu vrei sa pui cat trebuie? :)


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: CHIRILA ADRIAN din Noiembrie 01, 2013, 19:51:47
Daca puneam cat trebuie depaseam memoria disponibila...oricum acum am implementat in algoritm un deque si am optinut 50 de puncte  :) Am vazut la o sursa de 100 p ca nu a implementat tablouri bidimensionale..astfel ca i-a ajuns memoria.. nu am nici cea mai mica idee cum se face cu tablouri unidimensionale.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: George Marcus din Noiembrie 02, 2013, 10:01:29
Poti implementa graful cu liste de adiacenta.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: CHIRILA ADRIAN din Noiembrie 03, 2013, 19:39:08
Si daca implementez liste de adiacenta,fara sa le aloc dinamic (tot un tablou bidimensional),pierd cumva timp de executie?sau doar memorie?


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: George Marcus din Noiembrie 03, 2013, 21:14:59
E mai rau din toate punctele de vedere.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Serban Alexandru din Mai 07, 2015, 20:30:21
Buna seara ,am facut problema aceasta si cea cu sortarea topologica in java si la ambele am runtime error nu inteleg de ce


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Cioaca Valentin din Mai 07, 2015, 22:40:03
Buna seara!
Primesc aceasta eroare:
Eroare de compilare:
Main.java:8: error: class Bfs is public, should be declared in a file named Bfs.java
public class Bfs {
^
1 error

si nu inteleg pentru ca m-am asigurat ca numele sursei coincide cu numele clasei.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Boaca Cosmin din Mai 08, 2015, 12:38:42
Problema apare de la faptul ca sursa ta este automat redenumita in Main.java. Clasa ta ar trebui sa se numeasca Main nu BFS.


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Serban Alexandru din Mai 08, 2015, 14:50:19
Imi puteti raspunde si mie ? din ce cauza primesc runtime error ?


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Trasca Andrei din Decembrie 16, 2016, 09:23:30
Se poate sa se uite cineva la sursa mea? Am verificat testele si am raspunsurile bune. Cu toate astea, primesc la toate testele incorect pe site. Cu siguranta e o greseala penibila dar nu pot sa o vad...


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Jurj Andrei din Decembrie 27, 2016, 23:10:12
Pt. ultimul care a intrebat: http://www.infoarena.ro/job_detail/1836210
Declararea : ifstream .. nu fstream...


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Trasca Andrei din Ianuarie 12, 2017, 08:22:40
Ah... Ce greseala de incepatori. Nu inteleg totusi de ce nu am primit vreo eroare. In orice caz, multumesc mult de raspuns


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Mihai Voica din Mai 19, 2019, 12:22:12
 :rotfl: ](*,) ](*,) ](*,) ](*,) ](*,) ](*,) ](*,)


Titlul: Răspuns: 013 Parcurgere in latime
Scris de: Adrian Budau din Mai 25, 2019, 11:20:55
Sursele trimise in java pe Infoarena trebuie sa se numeasca Main.java (si implicit numele clasei trebuie sa se numeasca Main)