Source code for submission s1371

Spider.java

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Arrays;
  5. import java.util.Iterator;
  6. import java.util.LinkedList;
  7. import java.util.List;
  8. import java.util.PriorityQueue;
  9. import java.util.StringTokenizer;
  10.  
  11. public class Spider {
  12. public static void main(String[] args) throws NumberFormatException, IOException {
  13.  
  14. String s;
  15. while((s = br.readLine()) != null){
  16. List<Edge> list = new LinkedList<Edge>();
  17. List<Edge> fin = new LinkedList<Edge>();
  18. int n = Integer.parseInt(st.nextToken());
  19. int neges = Integer.parseInt(st.nextToken());
  20. int[] rel = new int[n];
  21.  
  22. for(int i=0; i<n; i++){
  23. rel[i] = i;
  24. }
  25.  
  26. for(int i = 0; i< neges; i++){
  27. st = new StringTokenizer( br.readLine() );
  28. Edge e= new Edge( Integer.parseInt(st.nextToken())-1,
  29. Integer.parseInt(st.nextToken())-1,
  30. Integer.parseInt(st.nextToken())
  31. );
  32. list.add(e);
  33. }
  34.  
  35. PriorityQueue<Edge> pqm = new PriorityQueue<Edge>(list);
  36.  
  37. while(fin.size() < n-1 && !pqm.isEmpty()){
  38. Edge min = pqm.remove();
  39.  
  40. int a = min.a;
  41. int b = min.b;
  42.  
  43. while(a != rel[a]){
  44. a = rel[a];
  45. }
  46. while(b != rel[b]){
  47. b = rel[b];
  48. }
  49.  
  50. if(a!=b){
  51. fin.add(min);
  52. rel[b] = rel[a] = Math.min(a, b);
  53. }
  54.  
  55. }
  56.  
  57. int maxEdge = 0;
  58. for(Iterator<Edge> it = fin.iterator(); it.hasNext(); ){
  59. Edge ed = it.next();
  60. if(ed.length>maxEdge){
  61. maxEdge = ed.length;
  62. }
  63. }
  64.  
  65. int sum=0;
  66. for(Edge ed: fin){
  67. sum+= ed.length;
  68. }
  69. if (fin.size() == n-1){
  70. System.out.println(2*maxEdge-sum);
  71. }
  72. else
  73. System.out.println("disconnected");
  74.  
  75. }
  76.  
  77. }
  78. }
  79.  
  80. class Edge implements Comparable<Edge>{
  81. int a;
  82. int b;
  83. int length;
  84.  
  85. public Edge( int a, int b, int length){
  86. this.a = a;
  87. this.b = b;
  88. this.length = length;
  89. }
  90.  
  91. public int compareTo(Edge e){
  92. return this.length - e.length;
  93. }
  94.  
  95. @Override
  96. public String toString() {
  97. return "Edge [a=" + a + ", b=" + b + ", length=" + length + "]";
  98. }
  99.  
  100.  
  101. }
  102.