Bob이 살고 있는 Alberta 도시에는 n개의 건물이 있고 1번부터 n번까지 번호가 붙어있다. 각 건물은 일정량의 전기를 생산하고 소비한다. v_i는 i번째 빌딩의 전력 생산량에서 소비량을 뺀 값으로 해당 빌딩의 "잉여 전력"을 나타낸다. 만약 건물의 소비량이 생산량보다 크다면 v_i값은 음수가 된다. v_i가 0인 경우는 없고, 항상 정수이다.
일부 건물은 서로 전선으로 연결되어 있어서 한 건물에서 생산한 전력의 일부를 다른 건물에 보내주기도 한다. 현재 전선은 총 m개가 있고 1번부터 m번까지 번호가 붙어있다. j번째 전선은 건물 x_j에서 건물 y_j로 z_j>0만큼의 전력을 공급해 준다. 각 전선은 방향성이 있고, 두 건물 사이에는 같은 방향의 전선은 최대 한 개만 있을 수 있다.
전기가 매우 중요한 자원이 되었기 때문에 Bob은 n개의 건물 중 일부 건물을 사들여 이 건물들의 잉여 전력 총량이 최대가 되도록 하고 싶다. 구체적으로, S가 1,2,…,n의 부분집합일 때, 즉, Bob이 S에 속한 건물들을 사기로 했을 때, S의 잉여 전력 총량인 V(S)는 아래와 같이 정의 된다.
- (S에 속한 건물들의 잉여 전력 총합) - (S에 속한 건물들이 S에 속하지 않은 건물들에 전선을 통해 공급하는 전력의 총합)
예를 들어 n=3, m=2, v_1=4, v_2=−1, v_3=−2, x_1=1, x_2=2, y_1=2, y_2=3, z_1=1, z_2=1 이라 하자.
- 건물 1은 자체 전력 생산량이 소비량보다 커서 잉여 전력이 4이며 다른 두 건물은 잉여 전력이 음수이다.
- 1번 전선은 건물 1에서 건물 2로 1만큼의 전력을 공급한다.
- 2번 전선은 건물 2에서 건물 3으로 1만큼의 전력을 공급한다.
이 예제에서 Bob이 건물을 살 방법은 총 23=8가지가 있는데, 각 경우에 대한 잉여 전력 총량은 아래와 같다.
- S가 공집한인 경우: V(S)=0.
- S=1인 경우: V(S)=4−1=3.
- S=2인 경우: V(S)=(−1)−1=−2.
- S=3인 경우: V(S)=(−2)−0=−2.
- S=1,2인 경우: V(S)=(4−1)−1=2. 이 경우, 1번 전선의 경우 건물 1에서 건물 2로 전력을 공급하지만 두 건물 모두 사들인다면 위 정의에 따라 V(S)를 계산할 때 고려하지 않는다.
- S=2,3인 경우: V(S)=(−1−2)−0=−3.
- S=1,3인 경우: V(S)=(4−2)−1=1.
- S=1,2,3인 경우: V(S)=(4−1−2)−0=1.
8가지 방법 중 잉여 전력 총량이 최대가 되는 경우는 S=1인 경우이다.
다른 예로, n=2, m=1, v_1=1, v_2=−5, x_1=1, y_1=2, z_1=1이라 하자.
- S가 공집합인 경우: V(S)=0.
- S=1인 경우: V(S)=1−1=0.
- S=2인 경우: V(S)=−5.
- S=1,2인 경우: V(S)=(1−5)−0=−4.
총 4가지 방법 중 잉여 전력 총량이 최대가 되는 경우는 S=1 또는 S가 공집합인 경우이다.
입력으로 n, m, v, x, y, z가 주어졌을 때, Bob이 달성할 수 있는 최대 잉여 전력 총량을 구해보자.