문제


https://www.acmicpc.net/problem/11376


풀이


열혈강호에서 직원 노드를 두 배로 늘리기만 하면 된다.


코드


import sys


def dfs(cur):
    visit[cur] = 1
    for nxt in graph[cur]:
        if (b[nxt] == -1) or (not visit[b[nxt]] and dfs(b[nxt])):
            b[nxt] = cur
            return 1
    return 0


n, m = map(int, sys.stdin.readline().split())
graph = [0] * (2 * n)

for i in range(n):
    data = list(map(int, sys.stdin.readline().split()))
    graph[2 * i] = data[1:]
    graph[2 * i + 1] = data[1:]

b = [-1] * (m + 1)
ans = 0
for i in range(2 * n):
    visit = [0] * (2 * n)
    ans += dfs(i)

print(ans)

Leave a comment