theperfectstall.java

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

JAVA
73
字号
package PKU.Hungary;
import java.util.Arrays;
import java.util.Scanner;


/**
 * ID:1274
 * 匈牙利算法
 * @author yhm
 *
 */
public class ThePerfectStall {

	static int N,M;
	static int[] link;
	static boolean[] use;
	static boolean[][] array;
	static int size;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		while(cin.hasNext()){
			N = cin.nextInt();
			M = cin.nextInt();
			
			size = N+M;
			array = new boolean[size][size];
			link = new int[size];
			Arrays.fill(link, -1);
			use = new boolean[size];
			
			for(int i=0;i<N;i++){
				int num = cin.nextInt();
				for(int j=0;j<num;j++){
					int col = cin.nextInt();
					array[i][col-1] = true;
				}
			}
			
			int num=0;
			for(int i=0;i<size;i++){
				Arrays.fill(use, false);
				if(can(i)){
					num++;
				}
			}
			
			
			System.out.println(num);
			
		}

	}
	
	static boolean can(int i){
		
		for(int j=0;j<size;j++){
			if(!use[j] && array[i][j]){
				use[j] = true;
				if(link[j]==-1 || can(link[j])){
					link[j] = i;
					return true;
				}
			}
		}
		
		return false;
	}

}

⌨️ 快捷键说明

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