ПредишенСледващото

Предвид ненасочена графика, съставена от възли и ръбове. Оригиналният графиката е даден списък на ръбове. Задължително да се повтаря през дълбините на всички все още не са посетили върхове във възходящ ред на номерата им.
За целите на байпаса в дълбочина оригиналната графика е удобно да се представят в компютърна памет списък на близост, съхранение за всеки списък връх на върховете в непосредствена близост до него. Булева масив се използва за отбелязване, че е бил на върха на посещения в процеса на обхождане дълбоко, или не си. В този случай, ако възелът се посещава, ако това не е така.


ArrayList прил []; // списък близост
булева използва []; // масив за съхранение на информация за приет и не е преминал по върховете

Както списък близост да представлява графика на Java е удобно да се използва масив, всеки елемент от които е структура от данни.
Следващият изпълнението данните се четат и извежда към конзолата.

Първият вход линия е настроен на две числа: - броят на върховете в графиката, и - брой ребра, съответно. Всяка от тези линии описва ръбове на графиката - две цели числа от порядъка на до - всички номера ребра.

Изходното ред на файла се показва в горния графика пропускане на дълбочината, като се започне с първия връх.


внос java.io.BufferedReader;
внос java.io.IOException;
внос java.io.InputStreamReader;
внос java.io.PrintWriter;
внос java.util.ArrayList;
java.util.Arrays внос;
внос java.util.StringTokenizer;

обществени клас Solution

частен инт п; // брой върхове в насочено графика
частен инт м; // броя на дъгите в насочено графика
частен ArrayList Кор []; // списък близост
частен булева използва []; // масив за съхранение на информация за приет и не е преминал по върховете

частен BufferedReader CIN;
частен PrintWriter Cout;
частен StringTokenizer tokenizer ;;

// процедура байпас в дълбочина
частни невалидни DFS (вътр V) // ако възелът се пресича, а след това не го правят от процедура повикване
ако (използван [V]) връщане;
>
използва [V] = вярно; // етикет на върха като минало
cout.print ((V + 1) + "");
// започне заобикаляйки всички върховете съседни об
за (INT I = 0; и ();
>

// чете графиката, тъй като списък на ръбове
за (INT I = 0; и

Разгледай делото пълзи алгоритъм в дълбочина на графиката, показана в ляво. След алгоритъма на оригиналния графиката ще бъде построен заобикаляйки гората в дълбочина, което виждате вдясно.

дълбочина байпас (изпълнение в Java)

Свързани статии

Подкрепете проекта - споделете линка, благодаря!