만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

연구소

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

요약
1번 정점에서 도달할 수 있는 정점에 통행증을 두고, 통행증 없이 다닐 때 되돌아올 수 없는 정점으로 갈 수 있는지 판정합니다.
난이도

보통10점 중 6점

유형
그래프, DFS, BFS
정답자
아직 제출이 없습니다

문제

티혼은 입학 시험에 합격해 지금은 한 연구소에서 공부한다. 그런데 그는 캠퍼스 안을 걸어 다니는 것을 두려워한다. 통행증을 어딘가에 두고 와서 영영 잃어버리면 수업에 들어갈 수 없게 될까 봐 걱정이다.

티혼이 다니는 연구소의 캠퍼스는 방향 그래프다. 일부 간선은 통행증을 가지고 있어야만 지날 수 있다.

통행증을 영구히 잃어버리려면, 티혼은 첫 번째 정점에 있는 기숙사에서 출발해 캠퍼스의 간선을 0개 이상 따라 걷는다. 그다음 어떤 정점에 통행증을 두고, 캠퍼스를 계속 걷다가 통행증을 두고 온 정점으로 돌아가지 못하게 되어야 한다.

티혼은 자신의 걱정이 근거 없는 것인지 알고 싶어 한다. 캠퍼스에서 통행증을 영구히 잃어버릴 수 있는지 판단하도록 도와 달라.

입력

첫 번째 줄에 정점의 수 nn과 간선의 수 mm이 주어진다 (1≤n,m≤3⋅1051 \le n, m \le 3 \cdot 10^5).

이어지는 mm개의 줄에는 방향 간선을 나타내는 세 정수 uiu_i, viv_i, tit_i가 주어진다 (1≤ui,vi≤n1 \le u_i, v_i \le n; 1≤ti≤21 \le t_i \le 2). 간선 ii는 uiu_i에서 viv_i로 지나갈 수 있음을 뜻한다. 간선 ii를 지나는 데 통행증이 필요하면 ti=1t_i = 1이고, 그렇지 않으면 ti=2t_i = 2이다.

주어진 그래프에는 자기 자신으로 가는 간선(루프)과 같은 두 정점을 잇는 여러 간선이 있을 수 있다.

출력

대소문자를 구분하지 않는 단어 하나를 한 줄에 출력한다. 티혼이 통행증을 영구히 잃어버릴 수 있으면 "Yes", 없으면 "No"를 출력한다.

힌트

첫 번째 예에서 티혼은 먼저 통행증을 가지고 간선 1→21 \rightarrow 2를 지난다. 그다음 정점 22에 통행증을 두고 간선 2→32 \rightarrow 3을 지난다. 이후 그는 정점 22로 돌아갈 수 없다.

예제2

  1. 예제 1

    입력
    3 4
    1 2 1
    2 3 2
    3 2 1
    3 1 2
    
    예상 출력
    Yes
    
  2. 예제 2

    입력
    6 8
    1 2 1
    2 3 2
    3 2 2
    3 4 1
    4 1 2
    1 5 2
    5 4 2
    6 1 2
    
    예상 출력
    No