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(prob)
  16. print(np.argmax(prob) + 1)
  17. print(np.max(prob))
  18. test_cases = [
  19. {
  20. "n": 6,
  21. "m": 10,
  22. "total_time": 40,
  23. "edges": [
  24. (1,2,0.3), (1,3,0.7), (3,3,0.2), (3,4,0.8), (2,4,1), (4,5,0.9),
  25. (4,4,0.1), (5,6,1.0), (6,3,0.5), (6,6,0.5)
  26. ]
  27. },
  28. {
  29. "n": 6,
  30. "m": 10,
  31. "total_time": 10,
  32. "edges": [
  33. (1,2,0.3), (1,3,0.7), (3,3,0.2), (3,4,0.8), (2,4,1), (4,5,0.9),
  34. (4,4,0.1), (5,6,1.0), (6,3,0.5), (6,6,0.5)
  35. ]
  36. }
  37. ]
  38. solve(test_cases)
  39.  
Success #stdin #stdout 0.78s 42452KB
stdin
Standard input is empty
stdout
[0.  0.3 0.7 0.  0.  0. ]
[0.   0.   0.14 0.86 0.   0.  ]
[0.    0.    0.028 0.198 0.774 0.   ]
[0.     0.     0.0056 0.0422 0.1782 0.774 ]
6
0.7739999999999999
[0.  0.3 0.7 0.  0.  0. ]
3
0.7