김밥천국과 도로지옥

시간 제한2초메모리 제한1024 MB

요약
간선 비용이 2, 3, 6분인 양방향 그래프에서 1번에서 N번까지 총 시간이 정확히 K인 보행이 존재하는지 판정한다.
난이도

보통10점 중 7점

유형
그래프, BFS, 정수론, 그리디
정답자
아직 제출이 없습니다

문제

세진이가 살고 있는 마을은 NN개의 구역이 있고, 각 구역을 잇는 도로가 총 MM개 존재한다. 각 구역에는 11번부터 NN번까지 차례대로 번호가 붙는다. 또한, 도로에는 빨간색, 노란색, 파란색의 세 종류의 도로가 있다.

김밥을 너무 좋아하는 세진이는 자신이 직접 김밥천국에 가지 않고 김밥을 주문할 수 있는 김밥 배달 전문 로봇을 만들었다. 이 로봇은 절대 멈추지 않고 움직이며 빨간색, 노란색, 파란색 도로를 지나가는 데 각각 정확히 22분, 33분, 66분이 걸린다.

세진이는 지금 막 김밥천국에 전화해 정확히 KK분 후에 김밥을 찾으러 가겠다고 말했다. 세진이는 지금 당장 로봇을 자신의 위치에서 출발시킬 예정이다. 마을의 구조, 세진이의 위치, 김밥집의 위치를 고려해서 정확히 KK분 후에 로봇이 김밥집에 도달할 수 있게 로봇의 이동 경로를 짜는 것이 가능할지 생각해 보자.

참고로, KK분을 맞추기 위해 같은 구역을 재방문하거나 같은 도로를 두 번 이상 지나는 것도 가능하며, 김밥집이 있는 구역을 중간에 지나치는 것도 가능하다. 정확히 KK분 후에 로봇이 김밥집의 위치에 있을 수 있는지만 확인하면 된다.

입력

첫 번째 줄에 구역의 개수 NN과 도로의 개수 MM, 그리고 정수 KK가 공백으로 구분되어 주어진다. (2≤N≤100,000;(2 \le N \le 100\\,000; N−1≤M≤min⁡(100,000,3N(N−1)/2);N - 1 \le M \le \min(100\\,000, 3N(N-1)/2); 1≤K≤109)1 \le K \le 10^9)

두 번째 줄부터 M+1M + 1번째 줄까지 정수 ii, jj, ww가 공백으로 구분되어 주어진다. 각각 ii번과 jj번 사이에 건너는 데 ww분이 걸리는 도로가 있음을 의미한다. (1≤i<j≤N;(1 \le i < j\le N; w∈2,3,6)w\in\\{2, 3, 6\\})

모든 도로는 양방향으로 통행할 수 있고, 임의의 두 구역 사이를 잇는 같은 색의 도로는 두 번 주어지지 않으며, 11번 구역에서 출발해 모든 구역에 도달할 수 있게 도로가 주어진다.

문제에서 로봇의 최초 위치는 항상 11번 구역이며, 김밥집의 위치는 항상 NN번 구역이다.

출력

이동 경로를 짜는 것이 가능하면 YES를, 불가능하면 NO를 출력한다.

예제2

  1. 예제 1

    입력
    5 5 31
    1 2 6
    2 3 6
    3 4 2
    3 4 3
    2 5 6
    
    예상 출력
    NO
    
  2. 예제 2

    입력
    5 5 29
    1 2 6
    2 3 6
    3 4 2
    3 4 3
    2 5 6
    
    예상 출력
    YES