test/AB.py
2026-07-01 19:46:51 +03:00

37 lines
No EOL
740 B
Python

import sys
sys.setrecursionlimit(4000)
data = sys.stdin.read().split()
num_v = int(data[0])
num_e = int(data[1])
adj = [[] for _ in range(num_v + 1)]
cursor = 2
for _ in range(num_e):
src = int(data[cursor])
dst = int(data[cursor + 1])
cursor += 2
adj[src].append(dst)
pairs = [0] * (num_v + 1)
def find_match(node):
if visited[node]:
return False
visited[node] = True
for nxt in adj[node]:
if pairs[nxt] == 0 or find_match(pairs[nxt]):
pairs[nxt] = node
return True
return False
total_matches = 0
for start_node in range(1, num_v + 1):
visited = [False] * (num_v + 1)
if find_match(start_node):
total_matches += 1
print(num_v - total_matches)