토큰
시간 제한2초메모리 제한1024 MB
방향 그래프에서 빨간 카드의 정점 집합에서 파란 카드의 집합으로 토큰을 옮긴 뒤 다시 빨간 집합으로 되돌릴 수 있는지 판별합니다.
문제
동훈이는 친구 찬경이에게 개의 정점과 개의 단방향 간선으로 이루어진 그래프를 선물했다. 찬경이는 그래프와 함께 온 카드 두 장을 보고, 동훈이가 자신을 골탕 먹이려고 미션을 준비했다는 것을 알아챘다. 찬경이가 수행해야 하는 미션은 다음과 같다.
- 카드 두 장 중 한 장은 빨간색, 다른 한 장은 파란색이다. 각 카드에는 1부터 까지의 정점 번호 중 개가 적혀 있다. 각 카드에 적힌 정점 번호는 모두 다르며, 한 정점 번호가 두 카드에 모두 적혀 있을 수 있다. 빨간 카드에 적힌 번호의 정점마다 토큰을 하나씩 올려놓은 상태를 '첫 번째 상태', 파란 카드에 적힌 번호의 정점마다 토큰을 하나씩 올려놓은 상태를 '두 번째 상태'라고 한다.
- 그래프에 토큰을 올려놓아 첫 번째 상태를 만든다.
- 토큰을 움직이는 과정을 반복해서 두 번째 상태를 만든다. 정점 에서 정점 로 가는 간선이 있고, 정점 에 토큰이 있으며, 정점 에 토큰이 없으면 정점 의 토큰을 정점 로 움직일 수 있다.
- 토큰을 움직이는 과정을 반복해서 다시 첫 번째 상태를 만든다.
찬경이는 동훈이의 성격을 알기 때문에, 미션이 처음부터 불가능할지도 모른다고 의심하고 있다. 불가능하다면 찬경이는 고생하지 않고 다른 일을 하러 갈 것이다. 찬경이를 도와주자!
입력
첫째 줄에 정점의 개수 과 단방향 간선의 개수 이 주어진다.
다음 개의 줄에는 간선 정보가 주어진다. 번째 줄에는 두 정수 , 가 주어지며, 번 정점에서 번 정점으로 가는 단방향 간선이 있다는 뜻이다. 중복 간선이나 자기 자신으로 가는 간선은 입력되지 않는다.
번째 줄에는 각 카드에 적힌 정점의 수 가 주어진다.
번째 줄에는 빨간 카드에 적힌 정점 번호 가 주어진다. 서로 다른 양의 정수이다.
번째 줄에는 파란 카드에 적힌 정점 번호 가 주어진다. 서로 다른 양의 정수이다.
각 줄의 값은 모두 공백으로 구분되어 주어진다.
출력
찬경이가 미션을 수행할 수 있으면 YES, 수행할 수 없으면 NO를 출력한다.