fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main(String[] args)
  11. {
  12. int[] values = {20, 30, 36, 40};
  13.  
  14. Vertex[] g = new Vertex[values.length];
  15. for(int i=0; i<g.length; i++)
  16. g[i] = new Vertex(values[i]);
  17.  
  18. for(int i=0; i<g.length; i++)
  19. for(int j=0; j<g.length; j++)
  20. if(i != j && g[j].id >= g[i].id-16 && g[j].id <= g[i].id+8)
  21. g[i].adj.add(g[j]);
  22.  
  23. Set<Vertex> toVisit = new HashSet<>(Arrays.asList(g));
  24. LinkedList<Vertex> path = new LinkedList<>();
  25. for(int i=0; i<g.length; i++)
  26. {
  27. path.addLast(g[i]);
  28. toVisit.remove(g[i]);
  29. findPaths(g[i], path, toVisit);
  30. toVisit.add(g[i]);
  31. path.removeLast();
  32. }
  33. }
  34.  
  35. static void findPaths(Vertex v, LinkedList<Vertex> path, Set<Vertex> toVisit)
  36. {
  37. if(toVisit.isEmpty())
  38. {
  39. System.out.println(path);
  40. return;
  41. }
  42.  
  43. for(Vertex av : v.adj)
  44. {
  45. if(toVisit.contains(av))
  46. {
  47. toVisit.remove(av);
  48. path.addLast(av);
  49. findPaths(av, path, toVisit);
  50. path.removeLast();
  51. toVisit.add(av);
  52. }
  53. }
  54. }
  55.  
  56. static class Vertex
  57. {
  58. int id;
  59. List<Vertex> adj;
  60.  
  61. Vertex(int id)
  62. {
  63. this.id = id;
  64. adj = new ArrayList<>();
  65. }
  66.  
  67. public String toString()
  68. {
  69. return String.valueOf(id);
  70. }
  71. }
  72. }
Success #stdin #stdout 0.04s 2184192KB
stdin
Standard input is empty
stdout
[36, 40, 30, 20]
[40, 30, 36, 20]
[40, 36, 30, 20]