Diferente pentru problema/bfs intre reviziile #45 si #64

Diferente intre titluri:

Parcurgere in latime
BFS - Parcurgere in latime

Diferente intre continut:

h2. Cerinta
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.
Fiind dat un nod $S$, sa se determine, pentru fiecare nod $X$, numarul minim de arce ce trebuie parcurse pentru a ajunge din nodul sursa $S$ la nodul $X$.
h2. Date de intrare
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$.
Fisierul de intrare $bfs.in$ contine pe prima linie 3 numere intregi $N M S$, 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 $X$ 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 $S$ la nodul $i$.
h2. Restrictii
* $2 ≤ N ≤ 100 000$
* $1 ≤ M ≤ 1 000 000$
* Daca nu se poate ajunge din nodul $X$ la nodul $i$, atunci numarul corespunzator numarului $i$ va fi $-1$.
* Daca nu se poate ajunge din nodul $S$ la nodul $i$, atunci numarul corespunzator numarului $i$ va fi $-1$.
h2. Exemplu
h2. Indicatii de rezolvare
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.
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 nod nou adaugat va fi 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 ce obtine 100 de puncte se poate gasi "aici":.
O rezolvare ce foloseste o matrice de adiacenta pentru a retine graful obtine $50$ de puncte. O solutie optima ca timp si memorie - $O(N+M)$, implementata cu ajutorul listelor de adiacenta, se gaseste 'aici':job_detail/223158?action=view-source.
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. Probleme similare
h2. Aplicatii
* "Graf":/problema/graf
* "Muzeu":/problema/muzeu
Algoritmul de 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 procedeu gasiti in acest 'articol':preoni-2005/runda-2/solutii, la problema 'Car':problema/car. Alte probleme ce folosesc algoritmul de parcurgere in latime in rezolvare sunt:
== include(page="template/taskfooter" task_id="bfs") ==
* '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
==SmfTopic(topic_id="...")==
== include(page="template/taskfooter" task_id="bfs") ==

Nu exista diferente intre securitate.

Diferente intre topic forum:

 
3448