Database deadlock victim selector
Your task
A database deadlock detector must pick a victim to abort. Given n transactions (0..n-1) and a list of wait-for edges [a, b] (a waits for b), find the smallest-numbered transaction that lies on at least one directed cycle (a deadlocked transaction). Aborting it is a candidate for breaking a deadlock. Return that transaction id, or -1 if there is no deadlock.
Examples
deadlock_victim(n: int, edges: list[list[int]]) -> intExample 1
Input
deadlock_victim(4, [[1, 2], [2, 3], [3, 1]])Output
1