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

42 lines
No EOL
774 B
Python

import sys
input_data = sys.stdin.read().split()
n = int(input_data[0])
m = int(input_data[1])
graph = [[] for _ in range(n + 1)]
ptr = 2
for i in range(1, n + 1):
while True:
val = int(input_data[ptr])
ptr += 1
if val == 0:
break
graph[i].append(val)
matching = [0] * (m + 1)
def dfs(v):
if used[v]:
return False
used[v] = True
for to in graph[v]:
if matching[to] == 0 or dfs(matching[to]):
matching[to] = v
return True
return False
for i in range(1, n + 1):
used = [False] * (n + 1)
dfs(i)
result = []
for to in range(1, m + 1):
if matching[to] != 0:
result.append((matching[to], to))
print(len(result))
for u, v in result:
print(u, v)