#P2553. The Bottom of a Graph
The Bottom of a Graph
Description
We will use the following (standard) definitions from graph theory. Let
Vbe a nonempty and finite set, its elements being called vertices (or nodes). Let
Ebe a subset of the Cartesian product
V×V, its elements being called edges. Then
G=(V,E)is called a directed graph.
Let nbe a positive integer, and let
p=(e1,...,en)be a sequence of length
nof edges
ei∈Esuch that
ei=(vi,vi+1)for a sequence of vertices
(v1,...,vn+1). Then
pis called a path from vertex
v1to vertex
vn+1in
Gand we say that
vn+1is reachable from
v1, writing
(v1→vn+1).
Here are some new definitions. A node vin a graph
G=(V,E)is called a sink, if for every node
win
Gthat is reachable from
v,
vis also reachable from
w. The bottom of a graph is the subset of all nodes that are sinks, i.e.,
bottom(G)={v∈V|∀w∈V:(v→w)⇒(w→v)}. You have to calculate the bottom of certain graphs.
Input
The input contains several test cases, each of which corresponds to a directed graph
G. Each test case starts with an integer number
v, denoting the number of vertices of
G=(V,E), where the vertices will be identified by the integer numbers in the set
V={1,...,v}. You may assume that
1<=v<=5000. That is followed by a non-negative integer
eand, thereafter,
epairs of vertex identifiers
v1,w1,...,ve,wewith the meaning that
(vi,wi)∈E. There are no edges other than specified by these pairs. The last test case is followed by a zero.
Output
For each test case output the bottom of the specified graph on a single line. To this end, print the numbers of all nodes that are sinks in sorted order separated by a single space character. If the bottom is empty, print an empty line.
3 3
1 3 2 3 3 1
2 1
1 2
0
1 3
2