| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 (추가 시간 없음) | 1024 MB (추가 메모리 없음) | 299 | 58 | 51 | 22.973% |
$N$개의 정점과 $M$개의 양방향 간선으로 이루어진 그래프가 있다. 정점에는 1ドル$부터 $N$까지 번호가 매겨져 있다. 각 간선에는 가중치가 있는데, 가중치는 0ドル$ 또는 1ドル$이다. 이제 정점 $s$에서 정점 $e$까지 가는 가능한 모든 경로의 길이 중 최솟값을 구하여라.
위 문제는 전형적인 ‘0-1 BFS’ 문제가 되므로 너무 쉽다. 하지만 아래와 같이 그래프에 가중치 복사 버그가 일어난다면 어떨까?
가중치 복사 버그를 고려하여, 정점 $s$에서 정점 $e$까지 가는 가능한 모든 경로의 길이 중 최솟값을 구하여라. 답은 이진수로 출력하며, 답이 0ドル$인 경우에는 0을 출력하고, 그렇지 않은 경우에는 0으로 시작하면 안 된다.
첫째 줄에 정점의 수 $N$과 간선의 수 $M,ドル 시작 정점의 번호 $s$와 도착 정점의 번호 $e$가 공백을 사이에 두고 주어진다. (2ドル\le N\le 300,円 000$; 1ドル\le M\le 600,円 000$; 1ドル\le s,e\le N$; $s\ne e$)
이후 $M$개의 줄에 각 간선의 정보가 주어진다. 각 줄에는 $u,ドル $v,ドル $c$가 공백을 사이에 두고 주어진다. (1ドル\le u,v\le N$; $u\ne v$; $c\in\{0,1\}$) 이는 정점 $u$와 $v$를 연결하며 초기 가중치가 $c$인 간선이 있음을 의미한다.
$s$에서 $e$로 가는 경로가 적어도 하나 있다.
정점 $s$에서 정점 $e$로 가는 가능한 모든 경로의 길이 중 최솟값을 출력한다.
답은 이진수로 출력하며, 답이 0ドル$인 경우에는 0을 출력하고, 그렇지 않은 경우에는 0으로 시작하면 안 된다.
4 4 1 4 1 2 0 1 3 1 2 4 1 3 4 0
1
예제 1에서 정점 1ドル$에서 정점 4ドル$로 가는 경로는 정점 2ドル$를 지나는 것과 정점 3ドル$을 지나는 것 두 가지가 있다.
정점 2ドル$를 지나는 경우 가중치가 0ドル$인 간선을 지난 뒤 가중치가 1ドル$인 간선을 지나므로 경로의 길이는 1ドル$이다.
정점 3ドル$을 지나는 경우 가중치가 1ドル$인 간선을 지나면 가중치가 0ドル$이었던 간선의 가중치가 1ドル$이 되고, 이 간선까지 지나므로 경로의 길이가 2ドル$이다.
즉 정점 1ドル$에서 정점 4ドル$로 가는 가능한 모든 경로 중 길이가 가장 짧은 경로는 정점 2ドル$를 지나는 것으로, 길이가 1ドル$이다.
7 10 1 2 3 1 1 7 3 1 4 7 1 3 6 0 5 1 1 1 7 0 5 4 0 6 2 0 4 2 1 6 4 0
11