[BOJ] 11375. 열혈강호
15 Apr 2026
Reading time ~1 minute
풀이
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static ArrayList<Integer>[] graph;
static boolean[] v;
static int[] match;
public static void main(String[] args) {
int answer = 0;
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
graph = new ArrayList[N+1];
v = new boolean[M+1];
match = new int[M+1];
for(int i = 1; i <= N; i++) {
graph[i] = new ArrayList<>();
}
for(int i = 1; i <= N; i++) {
int k = sc.nextInt();
for(int j = 0; j < k; j++) {
int a = sc.nextInt();
graph[i].add(a);
}
}
for(int i = 1; i <= N; i++) {
Arrays.fill(v, false);
if(matching(i)) answer++;
}
System.out.println(answer);
}
public static boolean matching(int num) {
for(int target : graph[num]) {
if(v[target]) continue;
v[target] = true;
if(match[target] == 0 || matching(match[target])) {
match[target] = num;
return true;
}
}
return false;
}
}