본문 바로가기

카테고리 없음

[백준 11376번] 열혈강호 2 (Python3)

import sys
input = sys.stdin.readline

def DFS(i):
  if visited[i]:
    return
  visited[i] = 1
  for w in graph[i//2]:
    if work[w]<0:
      work[w] = i
      return 1
  for w in graph[i//2]:
    if DFS(work[w]):
      work[w] = i
      return 1

N,M = map(int,input().split())
graph = [[*map(int,input().split())][1:] for i in range(N)]
work = [-1]*(M+1)
for i in range(2*N):
  visited = [0]*2*N
  DFS(i)
print(M+1-work.count(-1))

= 열혈강호 [백준 11375번] 열혈강호 (Python3) (tistory.com)

똑같은 사람이 두 명 있다고 생각하고 이분매칭을 해주면 된다.