This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
from collections import defaultdict
n, m, r, t, k = map(int, input().split())
graph = defaultdict(list)
matching = [-1] * m
degree = [0] * n
used = [0] * (n + 1)
T = 0
def try_dfs(v, deg):
global T
if used[v] == T:
return False
used[v] = T
if degree[v] > deg + 1:
return True
for u in graph[v]:
if try_dfs(matching[u], deg):
degree[matching[u]] -= 1
matching[u] = v
degree[v] += 1
return True
return False
for _ in range(k):
u, v = map(int, input().split())
u -= 1
v -= 1
graph[u].append(v)
for u in range(m):
if matching[u] == -1:
for v in range(n):
if u in graph[v] and matching[u] == -1:
matching[u] = v
degree[v] += 1
updated = True
while updated:
updated = False
ds = [(degree[v], v) for v in range(n)]
ds.sort()
T += 1
for _, v in ds:
if try_dfs(v, degree[v]):
updated = True
break
penalty = 0
res = []
for v in range(n):
degree[v] = min(degree[v], t // r)
for u in range(m):
if matching[u] != -1 and degree[matching[u]]:
penalty += degree[matching[u]] * r
degree[matching[u]] -= 1
res.append((matching[u] + 1, u + 1, degree[matching[u]] * r))
print(len(res), penalty)
for el in res:
print(el[0], el[1], el[2])
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |