변호사들

누가 누구를 변호할 수 있는지 주어진 방향 그래프에서, 모든 변호사가 변호를 한 번 이상 받고 서로 변호하는 쌍이 없도록 간선을 고를 수 있는지 판정한다.

어려움8그래프그리디구현수학아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

N명의 변호사가 사기 범죄를 저지른 혐의로 기소되었다. N명의 변호사는 서로를 변호하여 전원 무사히 무죄로 처리되려고 한다.

변호사들은 자신이 신뢰하는 변호사에게만 변호를 받을 수 있다. 이 신뢰관계란 M개의 (A, B)쌍으로 표현되는데, 이는 변호사 B가 변호사 A를 신뢰한다는 의미로 이 경우에만 변호사 A가 변호사 B를 변호할 수 있다.

각각의 변호사들의 실력은 매우 뛰어나기 때문에, 1명 이상의 변호를 받은 사람은 무조건 무죄가 된다. 단, 두 변호사 A, B에 대해 AB를 변호하고, BA를 변호하는 경우는 매우 수상하기 때문에 둘 모두 유죄가 된다.

각 (A, B) 쌍에 대해 변호사 A가 변호사 B를 변호할지 말지를 선택하여 모든 변호사가 무죄가 되는 것이 가능한지 판정하라.

입력

첫 줄에 NM이 주어진다. (1 ≤ N, M ≤ 200,000)

두 번째 줄부터 줄에 걸쳐 i번째 줄에는 서로 다른 두 정수 Ai, Bi가 주어진다. 이는 변호사 Ai가 변호사 Bi를 변호할 수 있다는 뜻이다.

주어지는 입력에서 순서쌍 (A, B)가 중복하여 나타나는 경우는 없다.

출력

모든 변호사가 1명 이상의 변호를 받고, 서로를 변호하는 변호사 쌍이 없도록 할 수 있는 경우 첫 줄에 YES을 출력한다.

불가능한 경우 첫 줄에 NO를 출력한다.