All submissions for this problem are available.
Given a directed graph G with N vertices and M edges. For each vertex u, you must assign positive integer F(u) such that:
- For each edge e from a to b, F(b) > F(a)
- The maximum value m = max( F(u) ) is minimized
Output the maximum value m. If no such assignment is possible output "IMPOSSIBLE" (quotes for clarity).
First line of input contains a number t, the number of test cases.
Each test case contain starts with two space seperated integers N and M, denoting the number of vertices and the number of edges in the graph respectively.
Each of the following M lines contain two space seperated integers a b denoting an edge from vertex a to vertex b.
There can be multiple edges between two vertices a and b.
For each testcase output the maximum value m or "IMPOSSIBLE" if no assignment is possible.
2 2 2 1 2 2 1 3 2 1 2 1 3
t <= 20 N <= 10000 M <= 20000 1 <= a,b <= N
A feasible assignment for the second testcase is: Vertex Number 1 1 2 2 3 2 So the maximum value is 2
|Time Limit:||0.262941 sec|
|Source Limit:||50000 Bytes|
|Languages:||C, CPP14, JAVA, PYTH, PYTH 3.6, PYPY, CS2, PAS fpc, PAS gpc, RUBY, PHP, GO, NODEJS, HASK, rust, SCALA, swift, D, PERL, FORT, WSPC, ADA, CAML, ICK, BF, ASM, CLPS, PRLG, ICON, SCM qobi, PIKE, ST, NICE, LUA, BASH, NEM, LISP sbcl, LISP clisp, SCM guile, JS, ERL, kotlin, PERL6, TEXT, SCM chicken, PYP3, CLOJ, COB, FS|
Fetching successful submissions
If you are still having problems, see a sample solution here.