Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void findPath()
- {
- System.out.println("finding path from "+ start.getName() + " to "+ stop.getName());
- if(start.equals(stop))
- {
- System.out.println("start = stop, path is 0 units long");
- return;
- }
- int listsToAdd = 0;
- List <Node>l = new ArrayList<Node>();
- l.add(start);
- listOfLists.add(l);
- listOfLengths.add(0);
- listOfBools.add(false);
- for(int i = 0; i < listOfLists.size();i++)//pro kazdy list v seznamu listu
- {
- for(int j =0;j<edges.size();j++)//pro vsechny hrany ktere sousedi s danym bodem
- {
- //System.out.println(edges.get(j).getFrom().getName());
- //System.out.println(listOfLists.get(i).s);
- int size = listOfLists.get(i).size();
- if((edges.get(j).getFrom().getName()==listOfLists.get(i).get(size-1).getName()) &&
- (listOfLists.get(i).contains(edges.get(j).getTo())==false))
- {
- List<Node> list = new ArrayList<>(listOfLists.get(i));
- list.add(edges.get(j).getTo());
- listOfLists.add(list);
- int len = listOfLengths.get(i);
- len+=edges.get(j).getValue();
- listOfLengths.add(len);
- if(edges.get(j).getTo()==stop)
- {
- listOfBools.add(true);
- }
- else
- {
- listOfBools.add(false);
- }
- }
- if((edges.get(j).getTo().getName()==listOfLists.get(i).get(size-1).getName()) &&
- (listOfLists.get(i).contains(edges.get(j).getFrom())==false))
- {
- List<Node> list = new ArrayList<>(listOfLists.get(i));
- list.add(edges.get(j).getFrom());
- listOfLists.add(list);
- int len = listOfLengths.get(i);
- len+=edges.get(j).getValue();
- listOfLengths.add(len);
- if(edges.get(j).getFrom()==stop)
- {
- listOfBools.add(true);
- }
- else
- {
- listOfBools.add(false);
- }
- }
- }
- }
- // for(int i =0;i<listOfLists.size();i++)
- // {
- // List <Node> llll =listOfLists.get(i);
- // for(int j = 0;j < llll.size();j++)
- // {
- // System.out.print(llll.get(j).getName());
- // }
- // System.out.println();
- // System.out.println(listOfLengths.get(i));
- // }
- for(int i =0;i<listOfLists.size();i++)
- {
- path = listOfLists.get(i);
- for(int j = 0; j <path.size();j++)
- {
- System.out.print(path.get(j).getName()+"-");
- }
- System.out.print(" size: "+listOfLengths.get(i)+" " + listOfBools.get(i));
- System.out.println();
- }
- int shortest = Integer.MAX_VALUE;
- this.length = shortest;
- for(int i =0;i<listOfLists.size();i++)
- {
- if(listOfBools.get(i))
- {
- if(listOfLengths.get(i)<shortest)
- {
- shortest = listOfLengths.get(i);
- path = listOfLists.get(i);
- }
- }
- }
- System.out.println();
- System.out.println();
- System.out.println("The path is "+ shortest +" units long");
- System.out.print("The nodes are: ");
- for(int i =0;i<path.size();i++)
- {
- System.out.print(path.get(i).getName()+"-");
- }
- System.out.println();
- }
Advertisement
Add Comment
Please, Sign In to add comment