[X] x1⋚x2x_1 \lesseqgtr x_2

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

요약
N개의 변수와 <, <=, >, >=, ==, != 로 표현된 M개의 비교가 주어질 때, 모든 비교를 만족하도록 각 변수에 1 이상 N 이하의 정숫값을 배정하거나 불가능하면 NO를 출력한다.
난이도

보통10점 중 7점

유형
유니온 파인드, 그래프, BFS, 위상 정렬
정답자
아직 제출이 없습니다

문제

하바는 어린 시절부터 NN개의 변수 x_1,x_2,…,x_Nx\_1,x\_2,\ldots ,x\_N을 가지고 놀면서, 변수들 간의 크기를 비교한 결과를 적어두곤 했다.

물론 하바는 장난기가 넘치기 때문에, aa와 bb를 비교한 결과를 다음 66가지 중 하나로 적었다.

  • a<ba \lt b: aa가 bb보다 작다.
  • a≤ba\le b: aa가 bb보다 작거나 같다.
  • a>ba>b: aa가 bb보다 크다.
  • a≥ba\ge b: aa가 bb보다 크거나 같다.
  • a=ba=b: aa와 bb는 같다.
  • a≠ba\ne b: aa와 bb는 다르다.

변수들 간의 비교 결과가 총 MM개 주어질 때, 하바가 가지고 있는 NN개의 변수의 값을 추정해 보자.

입력

첫째 줄에는 하바가 가지고 있는 변수의 개수 NN과 비교 결과의 개수 MM이 공백으로 구분되어 주어진다. (1≤N≤500,000;0≤M≤500,000)(1\le N\le 500\\, 000;0\le M\le 500\\, 000)

둘째 줄부터 MM개의 줄에 걸쳐 정수 aa, 문자열 opop, 정수 bb가 공백으로 구분되어 주어진다. 이는 x_ax\_a와 x_bx\_b를 비교한 결과를 의미하며, opop는 <, <=, >, >=, ==, != 중 하나이다. (1≤a,b≤N)(1\le a,b\le N)

출력

만약 비교 결과들을 모두 만족하는 NN개의 변수의 값을 추정할 수 없다면 첫째 줄에 NO를 출력한다.

만약 비교 결과들을 모두 만족하는 NN개의 변수의 값을 추정할 수 있다면 첫째 줄에 YES를 출력하고, 둘째 줄에 x_1,x_2,…,x_Nx\_1,x\_2,\ldots ,x\_N으로 가능한 값을 공백으로 구분하여 출력한다.

모든 x_ix\_i는 11 이상 NN 이하의 정수여야 한다. 답이 존재하는 모든 경우에 대해, 이 조건을 만족하는 답이 존재함을 보일 수 있다.

만약 가능한 답이 여러 가지라면, 그중 아무거나 하나를 출력한다.

예제2

  1. 예제 1

    입력
    5 6
    2 < 4
    1 <= 2
    5 > 3
    5 >= 4
    1 == 3
    3 != 2
    
    예상 출력
    YES
    1 2 1 3 5
    
  2. 예제 2

    입력
    1 1
    1 < 1
    
    예상 출력
    NO