jungleroads.java

来自「PKU中一些数据结构基本算法题的java实现」· Java 代码 · 共 70 行

JAVA
70
字号
package PKU.PRIM;
import java.util.*;


/**
 * ID:1251
 * PRIM
 * @author yhm
 *
 */
public class JungleRoads {

	
	static int MAXNUM = 101;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		while(cin.hasNext()){
			int size = cin.nextInt();
			if(size==0) break;
			int[][] dis = new int[size][size];
			for(int i=0;i<size;i++){
				Arrays.fill(dis[i], MAXNUM);
			}
			for(int i=0;i<size-1;i++){
				int start = cin.next().charAt(0)-'A';
				int num = cin.nextInt();
				for(int j=0;j<num;j++){
					int end = cin.next().charAt(0)-'A';
					dis[start][end] = cin.nextInt();
					dis[end][start] = dis[start][end];
				}
			}
			
			prim(dis,size);
			
		}

	}
	
	static void prim(int[][] dis, int size){
		int sum=0;
		int low[] = new int[size];
		for(int i=0;i<size;i++){
			low[i] = dis[0][i];
		}
		low[0] = 0;
		
		for(int i=1;i<size;i++){
			int min = MAXNUM;
			int k=1;
			for(int j=1;j<size;j++){
				if(low[j]!=0 && low[j]<min){
					k = j;
					min = low[j];
				}
			}
			sum+=min;
			low[k] = 0;
			for(int j=1;j<size;j++){
				low[j] = Math.min(low[j], dis[k][j]);
			}
		}
		System.out.println(sum);
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?