Go to diff to previous submission
import java.util.*; import java.io.*; class Spider { //private static final boolean DEBUG = true; while ( line != null ) { p = line.split( " " ); int n = toi( p[0] ); int m = toi( p[1] ); Edge[] es = new Edge[m]; int[] v2c = new int[n]; int c = n; // components count for ( int i = 0; i < n; ++i ) { v2c[i] = i; c2v[i] = new LinkedList<Integer>(); c2v[i].add(i); } for ( int i = 0; i < m; ++i ) { p = br.readLine().split(" "); es[i] = new Edge( toi(p[0]) - 1, toi(p[1]) - 1, toi(p[2]) ); } Edge last = es[es.length-1]; long sum = -last.len; int fc, tc; fc = v2c[last.from]; // from component tc = v2c[last.to]; // to component v2c[v] = fc; c2v[fc].add( v ); } c2v[tc] = null; --c; for ( int i = 0; i < m; ++i ) { fc = v2c[es[i].from]; // from component tc = v2c[es[i].to]; // to component if ( fc == tc ) continue; // already connected //if (DEBUG) System.out.println( String.format( "DEBUG: joining %d %d", fc, tc ) ); sum += es[i].len; // join components v2c[v] = fc; c2v[fc].add( v ); } c2v[tc] = null; --c; } line = br.readLine(); } } static class Edge implements Comparable<Edge> { int from; int to; long len; Edge( int f, int t, int l ) { from = f; to = t; len = l; } public int compareTo( Edge e ) { if ( this.len == e.len ) return 0; return this.len < e.len ? -1 : 1; } } }
--- c4.s917.cteam046.spider.java.0.Spider.java +++ c4.s960.cteam046.spider.java.0.Spider.java @@ -14,4 +14,5 @@ int n = toi( p[0] ); int m = toi( p[1] ); + if ( m == 0 ) { System.out.println( "disconnected" ); line = br.readLine(); continue; } Edge[] es = new Edge[m]; int[] v2c = new int[n];