입력이 없고 출력이 정해진 4개 정점, 5개 간선 유량 그래프를 그대로 인쇄하는 문제이다.
쉬움3그래프완전 탐색구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB항상 플로우 문제를 Edmond-Karp 알고리즘으로 푸는 지구이는 어느 날 정점 500개와 간선 100000개의 플로우 문제를 보게 되었다. 지구이는 열심히 플로우 그래프를 구성하고, 약 2000바이트를 코딩한 후 제출했지만 정답 판정을 받지 못했다. 코드 최적화를 하다가 지친 지구이는 시간복잡도가 최악의 경우 O(V2E)인 Dinic이라는 알고리즘을 찾아냈다.
Dinic 알고리즘은 다음과 같다.
Dinic의 시간복잡도는 O(V2E)이며, 증명은 다음과 같다.
지구이는 열심히 구현했음에도 여전히 정답 판정을 받지 못했다. 도토리는 지구이의 코드를 보고, 확장 경로를 찾을 때 플로우를 흘릴 수 없는 간선들을 매번 처음부터 다시 탐색하는 실수가 있다고 알려 주었다. 지구이는 작은 예제 그래프를 보기 전까지 그 말을 믿지 않는다.
도토리를 도와 그 예제 그래프를 출력하자. 출력할 그래프는 하나뿐이다.
지구이가 푸는 문제는 1번 정점에서 N번 정점까지 플로우를 흘리는 문제이다. 간선은 연결 리스트로 저장하며, 리스트의 앞부분에 새 간선을 넣기 때문에 나중에 입력된 간선을 먼저 사용한다.
입력은 없다.
첫 번째 줄에 정점 개수 N과 간선 개수 M을 출력한다. N은 4이고 M은 5이다.
그다음 M개의 줄에 시작 정점 s, 끝 정점 e, 최대 유량 f를 공백으로 구분해 한 줄에 하나씩, 아래 순서대로 출력한다.
그래프에 중복 간선은 없다. 각 줄은 s, e, f 순서로 정수를 출력한다.