hdu 1233 还是畅通工程<java>
2013-01-24 11:29
453 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1233
题目 | 题意 | 备注 |
给出城市间距离,求联通最短距离 | 并查集+快排 | 冒泡超时 |
import java.util.Scanner; public class Main { public static void QuickSort(int a[],int b[],int c[],int start,int end){ int lo = start; int hi = end; if (lo >= hi) return; boolean transfer=true; while (lo != hi) { if (a[lo] > a[hi]) { int temp = a[lo]; a[lo] = a[hi]; a[hi] = temp; temp = b[lo]; b[lo] = b[hi]; b[hi] = temp; temp = c[lo]; c[lo] = c[hi]; c[hi] = temp; transfer = (transfer == true) ? false : true; } if(transfer) hi--; else lo++; } lo--; hi++; QuickSort(a,b,c, start, lo); QuickSort(a,b,c, hi, end); } public static void main(String[] args) { int m,n,i; Scanner oo=new Scanner(System.in); while(oo.hasNext()){ n=oo.nextInt(); if(n==0){break;} m=n*(n-1)/2; int a[]=new int[m+1]; int b[]=new int[m+1]; int c[]=new int[m+1]; int f[]=new int[n+1]; for(i=1;i<=n;i++){ f[i]=i; } for(i=1;i<=m;i++){ a[i]=oo.nextInt(); b[i]=oo.nextInt(); c[i]=oo.nextInt(); } QuickSort(c,a,b,1,m); int fa,fb,min=0;; for(i=1;i<=m;i++){ fa=a[i]; fb=b[i]; while(fa!=f[fa]){ fa=f[fa]; } while(fb!=f[fb]){ fb=f[fb]; } if(fa!=fb){ f[fa]=f[fb]; min=min+c[i]; } } System.out.println(min); } } }
相关文章推荐
- hdu 1690 Bus System<java>
- hdu 1142 A Walk Through the Forest<java>
- HDU 1233 还是畅通工程
- hdu 1242 Rescue<java>
- hdu 1548 A strange lift <java>
- hdu 2544 最短路<java>
- hdu 1372 Knight Moves <java>
- hdu 1232 畅通工程<java>
- hdu 1102 Constructing Roads<java><prime>
- hdu 1312 Red and Black <java>
- hdu 1162 Eddy's picture<java><prime>
- HDU 1233 还是畅通工程
- hdu 1241 Oil Deposits <java>
- hdu 1301 Jungle Roads<java><prime>
- hdu 1233 最小生成树 "还是畅通工程"
- hdu 1175 连连看<java>
- hdu 2553 N皇后问题<java>
- hdu 3371 Connect the Cities <prim>
- Java多态之重写<一>
- [HDU 1233] 还是畅通工程(最小生成树)