Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.48 KB | None | 0 0
  1. list_of_adjacency = [[]]
  2. info = []  # info[i] это номер вершины первой доли, связанной ребром с вершиной i второй доли
  3. used = []  # просто массив для dfs
  4.  
  5.  
  6. def kuhn(vert):
  7.     if used[vert]:
  8.         return False
  9.     used[vert] = True
  10.     for i in range(len(list_of_adjacency[vert])):
  11.         to = list_of_adjacency[vert][i]
  12.         if info[to] == -1 or kuhn(info[to]):
  13.             info[to] = vert
  14.             return True
  15.     return False
  16.  
  17.  
  18. def main():
  19.     with open('in.txt', 'r') as input_file:
  20.         nums = input_file.readline().split()
  21.         k = int(nums[0])
  22.         l = int(nums[1])
  23.         for i in range(k):
  24.             list_of_adjacency.append(list(map(int, input_file.readline().split())))
  25.     global info
  26.     info = [-1 for i in range(l + 1)]
  27.     for v in range(1, k + 1):
  28.         global used
  29.         used = [False for i in range(k + 1)]
  30.         success = kuhn(v)
  31.         if not success:
  32.             with open('out.txt', 'w') as output_file:
  33.                 output_file.write('N\n')
  34.                 output_file.write(str(v))
  35.             exit(0)
  36.  
  37.     output = [None for i in range(k + 1)]
  38.     for i in range(l + 1):
  39.         if info[i] != -1:
  40.             output[info[i]] = i
  41.     with open('out.txt', 'w') as output_file:
  42.         output_file.write('Y\n')
  43.         for i in range(1, k + 1):
  44.             output_file.write(str(output[i]) + ' ')
  45.  
  46.  
  47. if __name__ == '__main__':
  48.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement