Alice와 Bob
시간 제한1초메모리 제한512 MB
색칠된 DAG의 각 정점에 토큰을 최대 하나 놓는 배치 중에서, 최적 플레이에서 Alice(흰색 이동)가 Bob(검은색 이동)을 이기는 경우의 수를 센다.
문제
Alice와 Bob이 Alice부터 시작해 번갈아 턴을 두는 게임을 한다.
두 사람에게는 방향 비순환 그래프(DAG)가 주어지며, 모든 간선 는 를 만족한다.
이 DAG의 모든 정점은 두 가지 색 중 하나로 칠해져 있고, 정점 위에는 토큰이 놓여 있다(한 정점에 토큰이 여러 개 있을 수 있다).
Alice는 자신의 턴에 토큰을 하나 이상 포함한 흰색 정점 를 고른다. 그다음 나가는 간선 하나를 골라 정점 에서 정점 로 토큰 하나를 옮긴다.
Bob은 자신의 턴에 토큰을 하나 이상 포함한 검은색 정점 를 고른다. 그다음 나가는 간선 하나를 골라 정점 에서 정점 로 토큰 하나를 옮긴다.
움직일 수 없는 사람이 진다.
Alice와 Bob은 아직 토큰 배치를 정하지 않았지만, 게임이 시작될 때 각 정점에는 토큰이 최대 하나만 놓이기로 했다. 가지 토큰 배치 중에서, 두 사람이 최적으로 플레이할 때 Alice가 이기는 배치의 수를 구하시오. 값이 클 수 있으므로 으로 나눈 나머지를 구하시오.
입력
첫째 줄에 두 정수 이 주어진다(). 이는 그래프의 정점 수와 간선 수이다.
둘째 줄에 길이 의 문자열이 주어진다. 번째 문자가 W이면 정점 는 흰색이다. 그렇지 않으면 B이며 검은색이다.
다음 개의 줄에는 두 정점 , 가 주어진다(). 이는 간선 를 나타낸다.
DAG에 중복 간선은 없다.
출력
각 정점에 토큰을 최대 하나만 놓는 배치 중 Alice가 이기는 배치의 수를 으로 나눈 나머지를 출력한다.
힌트
첫 번째 예시에서 Alice는 한 번이라도 움직일 수 있는 모든 경우에 이긴다(Bob은 절대 움직일 수 없기 때문이다). 따라서 답은 이다.