Scenariusz na lab 6: ProszÄ wpierw dokoĹczyÄ zadanie o rolniku. Nowe zadanie jest nastÄpujÄ ce. NapisaÄ prostÄ klasÄ opisujÄ cÄ graf nieskierowany z wierzchoĹkami numerowanymi 0,1,...,n-1. Klasa powinna mieÄ opcjÄ dodawania nowego wierzchoĹka o kolejnym indeksie, dodawania nowej krawÄdzi pomiÄdzy dwoma wierzchoĹkami, oraz (najwaĹźniejsze) sprawdzania odlegĹoĹci miÄdzy wierzchoĹkami. To znaczy, powinna byÄ napisana metoda distance(int i, int j), ktĂłra zwrĂłci dĹugoĹÄ najkrĂłtszej ĹcieĹźki miÄdzy i-tym i j-tym wierzchoĹkiem (lub -1 jeĹli taka ĹcieĹźka nie istnieje). Implementacja powinna siÄ opieraÄ na algorytmie BFS. ProszÄ nie przekomplikowywaÄ architektury zadania: w przypadku grafĂłw moĹźna sobie wyobraziÄ naprawdÄ rozbudowane i ogĂłlne architektury, ale tutaj chcielibyĹmy postawiÄ na prostotÄ. W szczegĂłlnoĹci o ile klasa opisujÄ ca wierzchoĹek wydaje siÄ potrzebna, to wystarczy, Ĺźeby kaĹźdy wierzchoĹek pamiÄtaĹ po prostu listÄ/tablicÄ sÄ siadĂłw (nie trzeba oddzielnej klasy opisujÄ cej krawÄdzie). WartoĹci pomocnicze do BFSa (odlegĹoĹÄ/czy wierzchoĹek zostaĹ odwiedzony) mogÄ byÄ trzymane w lokalnej tablicy w metodzie liczÄ cej BFS, ale mogÄ teĹź po prostu byÄ atrybutami wierzchoĹka (wtedy warto dodaÄ metodÄ grafu resetujÄ cÄ te wartoĹci w kaĹźdym wierzchoĹku). RozwiÄ zanie proszÄ opatrzeÄ funkcjÄ main, ktĂłra testuje implementacjÄ na kilku prostych przykĹadach. Zadanie dla ambitnych: zaimplementowaÄ metodÄ shortestPath(int i, int j), ktĂłra zwrĂłci samÄ ĹcieĹźkÄ (jako tablicÄ lub listÄ). Do rozwiÄ zania przyda siÄ zapewne: - klasa ArrayList<T> --- rozszerzalna lista (znamy z poprzedniego labu); - interfejs Queue<T> i jego implementacja ArrayDeque<T> --- kolejka zaimplementowana na tablicy. To zadanie to czwarta z szeĹciu drobnych prac domowych z labu. ProszÄ o nadesĹanie rozwiÄ zania do poczÄ tku laboratorium (12:15) dnia 12 kwietnia.