고장 난 로봇
면접 대비시간 제한2초메모리 제한512 MB
각 노드에서 나가는 강제 이동 간선이 최대 하나인 방향 그래프에서, 로봇이 규칙을 많아야 한 번 어기면서 이동할 때 최종적으로 멈출 수 있는 노드의 수를 구한다.
문제
앨리스는 수업 과제로 로봇이 그래프를 탐색하도록 프로그래밍했다. 그래프에는 으로 번호가 붙은 정점 개와 방향 간선 개가 있고, 로봇은 정점 1에서 출발한다.
한 정점에서 나가는 간선은 여러 개일 수 있다. 앨리스는 정점마다 이웃 하나를 강제 이동 대상으로 지정해 둘 수 있다. 예를 들어 정점 5에서 이웃 1, 4, 6으로 나가는 간선이 있더라도 앨리스가 강제 이동을 4로 지정했다면, 로봇은 5를 떠날 때 4로 가야 한다.
로봇이 정상이라면 강제 이동이 지정된 정점에서는 언제나 그 이동을 따르고, 강제 이동이 없는 정점에 도착하면 멈춘다. 그런데 이 로봇에는 결함이 있어서 규칙을 어기고 그 정점의 이웃 중 아무 곳으로나 이동하기도 한다. 그 정점에 강제 이동이 지정되어 있든 없든 마찬가지다. 이런 오작동은 많아야 한 번 일어나고, 한 번도 일어나지 않기도 한다.
앨리스는 로봇을 디버깅하다 막혔다. 로봇이 더 이상 움직이지 않고 멈출 수 있는 정점이 어디인지 알아내 앨리스를 도와주자.
그림 1과 그림 2는 예제 그래프 두 개다. 빨간 화살표는 강제 이동에 해당하는 간선이고, 검은 화살표는 그 밖의 간선이다. 정점을 감싼 원이 빨간색이면 로봇이 멈출 수 있는 정점이다.
첫 번째 그래프에서 오작동이 없으면 로봇은 정점 1, 5, 4를 끝없이 돈다. 오작동으로 1에서 2로 건너뛸 수 있는데, 오작동은 이 한 번뿐이므로 로봇은 2에서 더 움직이지 않는다. 5에서 6으로 건너뛴 다음 강제 이동을 따라 7에서 멈출 수도 있다.
두 번째 그래프에는 강제 이동이 없으므로, 오작동이 없으면 로봇은 1에 그대로 머문다. 오작동으로 1에서 2나 3으로 갈 수도 있고, 그러면 그 자리에서 멈춘다.
입력
첫째 줄에 정점의 개수 과 간선의 개수 이 주어진다. (, )
다음 개 줄에는 각각 두 정수 와 가 주어진다. (, ) 이면 정점 에서 정점 로 가는, 강제 이동이 아닌 방향 간선이 있다. 이면 정점 에서 정점 로 가는 강제 이동 간선이 있다. 강제 이동은 많아야 900개다. 같은 방향 간선이 두 번 주어지는 일은 없고, 강제 이동의 시작 정점도 서로 다르다.
출력
로봇이 멈출 수 있는 정점의 개수를 출력한다.

