Topological sort P14952


Statement
 

pdf   zip

We must perform nn tasks, one at a time. Furthermore, some tasks must be done before others: there are mm precedence relations between tasks. Write a program to print a way to sort the nn tasks satisfying the mm given precedences.

Input

Input consists of several cases. Every case begins with nn, followed by mm, followed by mm distinct pairs xx yy that indicate that task xx must be done before task yy. You can assume 1n1041 \le n \le 10^4, 0m10n0 \le m \le 10n, and that the tasks are numbered from 0 to n1n - 1.

Output

For every case, print the lexicographically smallest order of the nn tasks that fulfills the mm given precedences. There will always be, at least, one solution.

Public test cases
  • Input

    3 1
    1 0
    
    1 0
    
    10 18
    0 3  4 8
    8 3  2 1
    5 7  5 6
    6 8  4 2
    4 0  8 1
    2 8  3 1
    6 2  7 3
    7 2  5 0
    0 6  9 5
    

    Output

    1 0 2
    0
    4 9 5 0 6 7 2 8 3 1
    
  • Information
    Author
    Salvador Roura
    Language
    English
    Translator
    Salvador Roura
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++ Python Python
    User solutions
    C++ Python