시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 1024 MB | 71 | 19 | 15 | 24.194% |
flow network $(G, c, s, t)$는 다음과 같이 정의된다.
주어진 flow network $(G, c, s, t)$에 대한 $s$-$t$ flow $f$는 다음과 같이 정의된다.
이때, flow $f$의 값은 $\displaystyle |f| = \sum_{(s,v) \in E} f(s,v) - \sum_{(v,s) \in E} f(v,s) = \sum_{(v,t) \in E} f(v,t) - \sum_{(t,v) \in E} f(t,v)$로 정의된다.
maximum flow는 주어진 flow network $(G, c, s, t)$에 대한 $s$-$t$ flow 중 값이 최대인 $s$-$t$ flow를 의미한다. 모든 $c(e)$가 정수라면, 모든 $f(e)$가 정수인 maximum flow $f$를 다항 시간에 구할 수 있음이 알려져 있다. 이에 대한 다항 시간 알고리즘의 예시로, 시간 복잡도 $O(VE^2)$의 Edmonds-Karp Algorithm과 시간 복잡도 $O(V^2 E)$의 Dinic's Algorithm이 있다.
여기에 추가로 함수 $p : E \rightarrow \{ 0, 1 \}$이 주어진다. 이 때, 우리는 다음 조건을 만족하는 $s$-$t$ flow $f$를 parity constraint flow라고 할 것이다.
parity constraint flow 중 값이 최대인 것을 parity constraint maximum flow라고 할 것이다.
flow network $(G, c, s, t)$와 함수 $p$가 주어졌을 때, 이에 대한 parity constraint maximum flow를 구해보자.
$N$과 $M$은 주어진 그래프 $G=(V, E)$의 정점의 개수와 간선의 개수를 의미한다
$u_i$와 $v_i$는 $u_i$에서 $v_i$로 향하는 간선이 있음을 의미하고, $c_i$와 $p_i$는 각각 $c(u_i, v_i)$와 $p(u_i, v_i)$를 의미한다.
이때, 입력은 다음과 같이 주어진다.
$N$ $M$ $s$ $t$
$u_1$ $v_1$ $c_1$ $p_1$
$\cdots$
$u_M$ $v_M$ $c_M$ $p_M$
첫 번째 줄에는 parity constraint maximum flow $f$의 값을 출력한다. 만약에 parity constraint flow가 존재하지 않는다면 -1
을 출력한다.
만약에 parity constraint flow가 존재한다면, $i = 1, \cdots, M$에 대해서 $(i+1)$번째 줄에 $f(u_i, v_i)$의 값을 출력한다.
답이 여러 개가 있는 경우, 그중 아무것이나 출력하면 된다.
번호 | 배점 | 제한 |
---|---|---|
1 | 10 | 모든 $i = 1, \cdots, M$에 대해서 $p_i = 0$이다. |
2 | 40 | $N \le 50$ |
3 | 50 | 추가 제약 조건 없음. |
3 2 1 3 1 2 5 0 2 3 7 0
4 4 4
4 5 1 4 1 2 4 1 2 4 4 0 2 3 5 1 1 3 4 0 3 4 4 1
5 3 2 1 2 3
3 2 1 3 1 2 2 1 2 3 2 0
-1
10 13 1 10 1 2 1 1 1 3 1 1 1 4 1 1 1 5 1 1 1 6 1 1 2 7 1 1 3 7 1 1 4 8 1 1 5 8 1 1 6 9 1 1 7 9 2 0 8 9 2 0 9 10 5 1
5 1 1 1 1 1 1 1 1 1 1 2 2 5
University > 연세대학교 > 2022 연세대학교 프로그래밍 경진대회 M번