fork download
  1. import numpy as np
  2.  
  3. def solve(test_cases):
  4. for case in test_cases:
  5. n, m, total_time, edges = case['n'], case['m'], case['total_time'], case['edges']
  6. steps = total_time // 10
  7. tmat = np.zeros((n, n))
  8. for edge in edges:
  9. u, v, p = edge
  10. tmat[u-1][v-1] = p
  11. prob = np.zeros(n)
  12. prob[0] = 1
  13. for _ in range(steps):
  14. prob = np.dot(prob, tmat)
  15. print(np.argmax(prob) + 1)
  16. print(np.max(prob))
  17. test_cases = [
  18. {
  19. "n": 6,
  20. "m": 10,
  21. "total_time": 40,
  22. "edges": [
  23. (1,2,0.3), (1,3,0.7), (3,3,0.2), (3,4,0.8), (2,4,1), (4,5,0.9),
  24. (4,4,0.1), (5,6,1.0), (6,3,0.5), (6,6,0.5)
  25. ]
  26. },
  27. {
  28. "n": 6,
  29. "m": 10,
  30. "total_time": 10,
  31. "edges": [
  32. (1,2,0.3), (1,3,0.7), (3,3,0.2), (3,4,0.8), (2,4,1), (4,5,0.9),
  33. (4,4,0.1), (5,6,1.0), (6,3,0.5), (6,6,0.5)
  34. ]
  35. }
  36. ]
  37. solve(test_cases)
  38.  
Success #stdin #stdout 0.78s 41312KB
stdin
Standard input is empty
stdout
6
0.7739999999999999
3
0.7