Cometin'

BOJ-2188 - Python

2021-04-21 at Algorithm category

N마리의 소, M개의 축사가 있는 이분매칭 문제, 11375번 문제와 동일한 구성이여서 반복숙달겸 풀었다.

import sys
input = sys.stdin.readline

def dfs(start):
    if visit[start] == 1: return 0

    visit[start] = 1
    for i in S[start]:
        if E[i] == 0 or dfs(E[i]):
            E[i] = start
            return 1
    return 0

N, M = map(int, input().split())
S = [[] for _ in range(N+1)]
E = [0 for _ in range(M+1)]
ans = 0

for i in range(1, N+1):
    temp = list(map(int, input().split()))
    S[i].extend(temp[1:])

for i in range(1, N+1):
    visit = [0 for _ in range(N+1)]
    if dfs(i): ans += 1

print(ans)
hyesungoh

Personal blog by hyesungoh.

I like to share my knowledge for those who wandering in issue.