Submission #764084

#TimeUsernameProblemLanguageResultExecution timeMemory
764084rithikkatyalProgramming Contest (POI11_pro)Cpython 3
0 / 100
547 ms6468 KiB
n, m, r, t, k = map(int, input().split()) # graph = defaultdict(list) graph ={} matching = [-1] * m degree = [0] * n for i in range(n): if graph.get(i)==None: graph[i]=[] # 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 # def find(d,matching,degree): # for u in range(m): # if matching[u] == -1: # for v in range(d,n): # if u in graph[v] and matching[u] == -1: # matching[u] = v # degree[v] += 1 # if v<n-1: # find(v+1,matching,degree) # else: # return 0 for _ in range(k): u, v = map(int, input().split()) u -= 1 v -= 1 graph[u].append(v) #find(0,matching,degree) 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 break for u in range(m): if matching[u] != -1: for v in range(n): if u in graph[v] and matching[u] !=v and degree[matching[u]]>(degree[v]+1): # print(matching[u],v,u,"ans") # print(degree[matching[u]]-1,degree[v]+1,u,"ans12") degree[matching[u]]-=1 matching[u] = v degree[v] += 1 #print(degree[matching[u]],degree[v],u,"ans12") # updated = True # while updated: # ds = [(degree[v], v) for v in range(n)] # ds.sort() # T += 1 # updated = any(try_dfs(v, degree[v]) for _, v in ds) 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]]: # print(matching[u],degree[matching[u]]) penalty += degree[matching[u]] * r degree[matching[u]] -= 1 res.append((matching[u] + 1, u + 1, degree[matching[u]] * r)) res.sort(key=lambda x:(x[2],x[0])) print(len(res), penalty) for el in res: print(el[0], el[1], el[2])
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...