Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package grafy;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.util.*;
- /*
- class W{
- List<W> laczenia = new ArrayList<W>();
- int numer;
- }
- * */
- class W{
- private List<W> laczenia=new ArrayList<W>();
- private int number, odleglosc;
- private String color;
- private W poprzednik;
- W(){
- }
- void addConnection(W w){
- laczenia.add(w);
- }
- void delDuplicates(W w){
- for(int i=0;i<w.laczenia.size();++i){
- for(int j=i+1;j<w.laczenia.size();){
- if(w.laczenia.get(j).equals(w.laczenia.get(i)))w.laczenia.remove(j);
- else ++j;
- }
- }
- }
- void printConnections(W w){
- this.delDuplicates(w);
- System.out.print(this.number+": ");
- while(!laczenia.isEmpty()){
- System.out.print(laczenia.get(0).number+" ");
- laczenia.remove(0);
- }
- System.out.println();
- }
- void setNumber(int i){
- number = i;
- }
- void setWhite(W w){
- w.color = "bialy";
- }
- void setBlack(W w){
- w.color = "czarny";
- }
- void setGray(W w){
- w.color = "szary";
- }
- void setOdleglosc(W w,int i){
- w.odleglosc = i;
- }
- int getOdleglosc(W w){
- return w.odleglosc;
- }
- void setPoprzednik(W w){
- poprzednik = w;
- }
- W getPoprzednik(W w){
- return w.poprzednik;
- }
- boolean isWhite(W w){
- return (w.color.equalsIgnoreCase("bialy"))?true:false;
- }
- void BFS(List<W> graf, int s){
- List<W> list = new ArrayList<W>();
- for(int i=0;i<graf.size();++i){
- graf.get(i).setWhite(graf.get(i));
- graf.get(i).setPoprzednik(null);
- graf.get(i).setOdleglosc(graf.get(i), -1);
- }
- graf.get(s).setGray(graf.get(s));
- graf.get(s).setOdleglosc(graf.get(s),0);
- graf.get(s).setPoprzednik(null);
- list.add(graf.get(s));
- while(!list.isEmpty()){
- W u = list.get(0);
- list.remove(0);
- for(W v: u.laczenia)
- {
- if(v.isWhite(v)){
- v.setGray(v);
- v.setOdleglosc(v, u.getOdleglosc(u)+1);
- v.setPoprzednik(u);
- list.add(v);
- }
- }
- u.setBlack(graf.get(u.number));
- }
- }
- }
- public class ListaSasiedztwa {
- public static void main(String[] args) throws FileNotFoundException{
- // Random r = new Random();
- //
- // // /\ stworszyl 10 wierzcholkow
- // for(int i=0;i<10;++i){
- // for(int j=r.nextInt(10);j>0;--j){
- // //if(i==j)continue;
- // int x=r.nextInt(10);
- // if(i==x)continue;
- // graf.get(i).addConnection(graf.get(x));
- // }
- // }
- // for(int i=0;i<10;++i){
- // graf.get(i).printConnections(graf.get(i));
- // }
- //
- //przerszukanie w wszerz
- Scanner sc = new Scanner(new File("D:\\programowanie\\java\\workspace\\java\\src\\grafy\\graf.txt"));
- List<W> graf = new ArrayList<W>();
- W w;
- int n = sc.nextInt(), x = sc.nextInt();
- for(int i=0;i<n;++i){
- w = new W();
- w.setNumber(i);
- graf.add(w);
- }
- while(sc.hasNext()){
- int a = sc.nextInt(), b = sc.nextInt();
- graf.get(a).addConnection(graf.get(b));
- }
- sc.close();
- w = new W();
- // w.printConnections(w);
- w.BFS(graf, x);
- for(int i=0;i<n;++i){
- System.out.println((i)+" - "+((graf.get(i).getOdleglosc(graf.get(i))==-1)?"x":""+graf.get(i).getOdleglosc(graf.get(i))+""));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement