최단 경로 쌍

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

요약
1에서 각 정점으로 가는 최단 경로 중 내부 정점 집합이 서로 겹치지 않는 두 개가 존재하는지 판별한다.
난이도

보통10점 중 7점

유형
그래프, 최단 경로, 동적 계획법, DFS
정답자
아직 제출이 없습니다

문제

NN개의 정점과 MM개의 간선을 가진 방향 그래프가 주어진다. 그래프의 정점은 1,2,…,N1, 2, \dots , N으로 번호가 매겨져 있다.

정점 11을 제외한 모든 정점 xx에 대하여, 정점 11에서 정점 xx로 가는 최단 경로 쌍을 찾아보고자 한다. 이때, 최단 경로 쌍이란 두 개의 최단 경로 P,QP, Q로 구성되어 있으며 다음 두 조건을 만족한다.

  • 두 최단 경로에 포함된 정점 집합을 각각 V_P,V_QV\_P, V\_Q라 할 때, (V_P∖1,x)∩(V_Q∖1,x)=∅(V\_P \setminus \\{1, x\\}) \cap (V\_Q \setminus \\{1, x\\}) = \emptyset를 만족한다.
  • V_P≠V_QV\_P \neq V\_Q

입력

첫 번째 줄에 정수 NN과 MM이 공백으로 구분되어 주어진다. (2≤N≤100,000;(2 \le N \le 100\\,000; 0≤M≤300,000)0 \le M \le 300\\,000)

두 번째 줄부터 MM개의 줄에 걸쳐 세 정수 u,v,cu, v, c가 공백으로 구분되어 주어진다. 이는 정점 uu에서 정점 vv로 가는 가중치가 cc인 간선이 있음을 의미한다. (1≤u,v≤N;(1\le u, v \le N; 1≤c≤109;1 \le c \le 10^9; u≠v)u \neq v)

임의의 두 정점 u,vu, v에 대하여, 정점 uu에서 정점 vv로 가는 간선은 최대 하나만 주어진다.

출력

첫 번째 줄에 N−1N - 1개의 정수를 공백으로 구분하여 출력하라. 이 중 ii번째 정수는, 정점 11에서 정점 i+1i+1로 가는 최단 경로 쌍이 존재하면 11, 아니면 00이다.

힌트

정점 aa에서 정점 bb로의 최단 경로란 정점 aa에서 정점 bb로 가는 경로 중 가중치의 합이 가장 작은 경로를 의미한다.

예제2

  1. 예제 1

    입력
    7 10
    1 2 2
    1 3 2
    3 2 1
    2 4 4
    3 4 4
    3 5 5
    4 5 6
    4 6 1
    4 7 1
    6 7 1
    
    예상 출력
    0 0 1 0 0 0
    
  2. 예제 2

    입력
    2 0
    
    예상 출력
    0