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. # Nodes are 1-based; adjust for 0-based indexing
  8. tmat = np.zeros((n, n))
  9. for edge in edges:
  10. u, v, p = edge
  11. tmat[u-1][v-1] = p # 0-based
  12. prob = np.zeros(n)
  13. prob[0] = 1 # Starting at node 1
  14. for _ in range(steps):
  15. prob = np.dot(prob, tmat)
  16. # Print the index (+1), of max probability (division), and optionally probability
  17. print(np.argmax(prob) + 1)
  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.79s 41360KB
stdin
Standard input is empty
stdout
6
3