Nu aveti permisiuni pentru a descarca fisierul grader_eval.cpp
Diferente pentru problema/bfs intre reviziile #64 si #43
Diferente intre titluri:
BFS -Parcurgere in latime
Parcurgere in latime
Diferente intre continut:
h2. Cerinta
Fiind dat un nod $S$, sa se determine, pentru fiecare nod$X$, numarul minim de arce ce trebuie parcurse pentru a ajunge din nodulsursa$S$ la nodul$X$.
Fiind dat un nod $X$, sa se determine, pentru fiecare nod, numarul minim de arce ce trebuie parcurse pentru a ajunge din nodul $X$ la nodul respectiv.
h2. Date de intrare
Fisierul de intrare $bfs.in$ contine pe prima linie 3 numere intregi $N MS$, cu semnificatia din enunt. Urmatoarele $M$ linii contin cate doua numere $x y$, cu semnificatia ca exista arc orientat de la $x$ la $y$.
Fisierul de intrare $bfs.in$ contine pe prima linie 3 numere intregi $N$ $M$ $X$, cu semnificatia din enunt. Urmatoarele $M$ linii contin cate doua numere $x $y$, cu semnificatia ca exista arc orientat de la $x$ la $y$.
h2. Date de iesire
In fisierul de iesire $bfs.out$ se vor afla $N$ numere separate prin spatiu cu semnificatia ca al $i$-lea numar reprezinta numarul minim de arce ce trebuie parcurse de la nodul $S$ la nodul $i$.
In fisierul de iesire $bfs.out$ se vor afla $N$ numere separate prin spatiu cu semnificatia ca al $i$-lea numar reprezinta numarul minim de arce ce trebuie parcurse de la nodul $X$ la nodul $i$.
h2. Restrictii * $2 ≤ N ≤ 100 000$ * $1 ≤ M ≤ 1 000 000$
* Daca nu se poate ajunge din nodul $S$ la nodul $i$, atunci numarul corespunzator numarului $i$ va fi $-1$.
* Daca nu se poate ajunge din nodul $X$ la nodul $i$, atunci numarul corespunzator numarului $i$ va fi $-1$.
h2. Exemplu
h2. Indicatii de rezolvare
Initial, se insereaza nodul $S$ intr-o coada vida, cu costul $0$. La fiecare pas, se ia nodul din inceputul cozii, se elimina si apoi se adauga vecinii nevizitati la finalul cozii. Costul unui nodnouadaugatvaficostul nodului care l-a adaugat $+ 1$. Mai multe amanunte asupra algoritmului de parcurgere in latime ({_Breadth First Search_}) puteti gasi "aici":http://en.wikipedia.org/wiki/Breadth-first_search si "aici":http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=graphsDataStrucs2.
Initial, se insereaza nodul $X$ intr-o coada vida, cu costul $0$. La fiecare pas, se ia nodul din inceputul cozii, se elimina si apoi se adauga vecinii nevizitati la finalul cozii. Costul unui nod adaugat $=$ costul nodului care l-a adaugat $+$ $1$. Mai multe amanunte asupra algoritmului de parcurgere in latime (Breadth First Search) puteti gasi "aici":http://en.wikipedia.org/wiki/Breadth-first_search si "aici":http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=graphsDataStrucs2.
O rezolvare cefoloseste o matrice de adiacenta pentru a retine graful obtine$50$de puncte.Osolutieoptima ca timp si memorie - $O(N+M)$, implementata cu ajutorul listelorde adiacenta, segaseste'aici':job_detail/223158?action=view-source.
O rezolvare ce obtine 100 de puncte se poate gasi "aici":.
Un alt algoritm pentru parcurgerea unui graf este prezentat'aici':problema/dfs.
Un alt algoritm pentru parcurgerea unui graf este prezentat "aici":problema/dfs.
h2.Aplicatii
h2. Probleme similare
Algoritmulde parcurgere in latime ({_Breadth First Search_}) poate fi adaptat in multe probleme. De exemplu, la problema 'Muzeu':problema/muzeu putem consideram matricea data un graf in care celulele sunt noduri, iar laturile comune dintre celule sunt muchii. La problema"CrazySwitches":http://www.topcoder.com/stat?c=problem_statement&pm=6071&rd=9812, graful este reprezentat de stari binare, iar muchiile de posibilitatea de a ne deplasa dintr-o stare in alta. Un tip mai aparte de BFS, prezent si in problema anterioara, este acela cand costurile de pe muchii sunt mici si pentru a rezolva problema folosim mai multe cozi (complexitatea fiind mai mica decat daca am folosi algoritmul 'Dijkstra':problema/dijkstra). Mai multe explicatii asupra acestui procedeugasiti in acest 'articol':preoni-2005/runda-2/solutii, la problema 'Car':problema/car. Alte probleme cefolosesc algoritmul de parcurgere in latime in rezolvare sunt:
* "Graf":/problema/graf
* 'Graf':problema/graf * 'Sate':problema/sate * "Cadere":http://campion.edu.ro/problems/3/455/cadere_ro.htm * "Honest":http://campion.edu.ro/problems/3/237/honest_ro.htm * 'Padure':problema/padure == include(page="template/taskfooter" task_id="bfs") ==
== include(page="template/taskfooter" task_id="bfs") ==
Nu exista diferente intre securitate.
Diferente intre topic forum:
3448