독서 모임 책 교환

아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

포르투의 독서 모임은 해마다 책 교환 행사를 연다. 회원은 각자 아끼는 책을 한 권씩 들고 와서, 마음에 드는 다른 책을 찾아 그 책의 주인과 바꾼다.

예전에는 서로의 책을 마음에 들어 하는 두 사람만 책을 바꿨다. 회원 A가 들고 온 책을 회원 B가 마음에 들어 하고 B가 들고 온 책을 A가 마음에 들어 하면, 두 사람이 책을 맞바꾸는 식이다. 그래서 들고 온 책을 그대로 들고 돌아가는 회원이 많았다.

짝 대신 순환을 찾으면 교환이 더 늘어난다. A는 B의 책만 마음에 들어 하고, B는 C의 책만, C는 A의 책만 마음에 들어 한다고 하자. 이 세 사람이 책을 한 방향으로 돌리면 모두 새 책을 얻는다. 순환의 길이는 3보다 길어도 된다.

회원 수와 회원이 마음에 들어 하는 책이 주어진다. 모든 회원이 새 책을 받도록 책을 나눌 수 있는지 판정하는 프로그램을 작성하시오. 회원은 마음에 들어 하는 책을 받을 때만 자기 책을 내놓는다. 즉 모든 회원 ii에게 서로 다른 책 p(i)p(i)를 하나씩 배정하되, 회원 iip(i)p(i)를 마음에 들어 해야 한다.

입력

첫째 줄에 회원 수 NN과 관심 표명의 수 MM이 공백으로 구분되어 주어진다.

다음 MM개 줄에는 각각 두 정수 AABB가 주어진다. 회원 AA가 회원 BB의 책을 마음에 들어 한다는 뜻이다. AABB는 항상 다르다. 회원이 자기가 들고 온 책을 마음에 들어 하는 일은 없다. 같은 (A,B)(A, B) 쌍은 두 번 주어지지 않는다.

출력

모든 회원이 새 책을 받도록 나눌 수 있으면 YES를, 그럴 수 없으면 NO를 출력한다.

제한

  • 2N100002 \le N \le 10\,000
  • 1M200001 \le M \le 20\,000
  • MN2NM \le N^2 - N
  • 0A,B<N0 \le A, B < N이고 ABA \ne B