Hide

Problem C
Minimum Cut

Given a directed weighted graph and two vertices $s$, $t$, the goal is to find a subset $U$ of the vertices such that $s \in U$, $t \not\in U$, and the weight of edges from $U$ to $\overline{U}$ is minimized.

Input

The first line of input contains four non-negative integers, $2 \le n \le 500$, $0 \le m \le 10\, 000$, $0 \le s \le n-1$ and $0 \le t \le n-1$, separated by single spaces, where $n$ is the numbers of nodes in the graph, $m$ is the number of edges, $s$ is the source and $t$ is the sink ($s \ne t$). Nodes are numbered from $0$ to $n-1$. Then follow $m$ lines, each line consisting of three (space-separated) integers $u$, $v$ and $w$ indicating that there is an edge from $u$ to $v$ in the graph with weight $1 \le w \le 10^8$.

Output

Output should begin with a line containing an integer $k$, giving the size of $U$. Then follow $k$ lines giving the vertices in $U$, one per line. If there are multiple choices for $U$ any one will be accepted.

You may assume that there is a cut such that the total weight of edges from $U$ to $\overline{U}$ is less than $2^{31}$.

Sample Input 1 Sample Output 1
4 5 0 3
0 1 10
1 2 1
1 3 1
0 2 1
2 3 10
2
1
0

Sample Input 2 Sample Output 2
2 1 0 1
0 1 100000
1
0

Sample Input 3 Sample Output 3
2 1 1 0
0 1 100000
1
1

Please log in to submit a solution to this problem

Log in