p_ce1052   3년 전

플로우 네트워크는

0 -> ( n*n+1 ~ n*n+n ) -> (1~n*n) -> (n*n+n+1~n*n+2n) -> n*n+2n+1 와 같이 구성하였습니다.

각각이 source, 행을 나타내는 정점, 칸을 나타내는 정점, 열을 나타내는 정점, sink 정점 순입니다. 

각 칸에 들어갈 숫자를 구하기 위해서

1. vertex_flow라는 배열을 만들어서 플로우를 흘릴 간선의 도착지가 열을 나타내는 정점이라면 현재 정점의 vertex_flow에 d를 더해준다. (현재 정점에서 플로우가 흐른 것이므로) 

상한값을 찾은 후에 디닉을 돌려서 vertex_flow에 적힌 값을 모두 출력합니다. 그런데 틀렸습니다를 받았습니다.

2. 상한값을 찾은 후 그 값으로 디닉을 돌려서 1번부터 n*n번 정점에 대해 해당 정점으로 들어오는 역방향 간선에 흐른 플로우 양을 출력하였습니다. 이경우는 ac를 받습니다. 

상식적으로 나가는 값과 들어오는 값이 같아야 하는 것 같은데 왜 1번은 안되는지 알고 싶습니다. 

댓글을 작성하려면 로그인해야 합니다.