문제 링크
- http://icpc.me/12880
사용 알고리즘
- DFS
시간복잡도
- $O(N^4)$
풀이
간선 가중치의 상한과 하한을 고정시킨 다음 DFS를 돌리는 것을 반복하면 됩니다.
하지만 가능한 상한이 150,000가지, 하한도 150,000가지이므로 TLE가 나게 됩니다. 최적화를 합시다.
가중치의 종류는 최대 $N^2$개입니다. 좌표압축을 해줍시다.
이제 가능한 상한이 $N^2$개, 하한이 $N^2$개, DFS를 하는데 $O(N^2)$으로 총 $O(N^6)$에 풀 수 있습니다.
하지만 상한을 고정시켰을 때 하한을 $N^2$가지를 모두 보는 것이 아니라 투포인터 느낌으로 보면 $O(N^2)$을 떼어줄 수 있습니다.
$O(N^4)$에 풀 수 있습니다.
전체 코드
1 |
|