피돌이 vs 피붕이

시간 제한1초메모리 제한1024 MB

요약
외차수가 2 이하인 DAG와 각 정점의 돌 개수가 주어질 때, 돌을 간선으로 옮기는 게임에서 선공과 후공 중 누가 이기는지 판정한다.
난이도

어려움10점 중 9점

유형
게임 이론, 동적 계획법, 그래프
정답자
아직 제출이 없습니다

문제

각 정점에서 나가는 간선이 최대 2개이고 정점이 NN개인 유향 비순환 그래프(DAG)가 주어진다. 초기에 그래프의 ii번 정점 위에는 a_ia\_i개의 돌멩이가 놓여있다. 피돌이와 피붕이가 이 그래프를 이용해 다음과 같은 게임을 한다.

  • 선공부터 번갈아 가며 다음을 반복한다.
  • 간선 1개를 고른다. 고른 간선의 출발 정점과 도착 정점을 각각 uu, vv라고 하자. uu에서 돌멩이 11개 또는 22개를 골라 vv로 옮긴다.
  • 자신의 차례에 위 시행을 할 수 없게 된 사람이 지게 된다.

다른 문제들의 지문에서 알 수 있듯이 피돌이가 이겼다. 그래프가 주어질 때 피돌이가 선공이었을지 후공이었을지 판단해 보자. 단, 둘 다 최선의 전략을 사용했다고 가정한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤10 000)(1 \leq T \leq 10\ 000)

각 테스트 케이스의 첫째 줄에 그래프의 정점 개수와 간선 개수 NN, MM이 공백을 두고 주어진다. (1≤N≤200 000;0≤M≤2N−3)(1 \leq N \leq 200\ 000; 0 \leq M \leq 2N-3)

각 테스트 케이스의 둘째 줄에 각 정점에 놓인 돌멩이의 개수를 나타내는 NN개의 정수 a_1,a_2,⋯ ,a_Na\_1, a\_2, \cdots, a\_N이 공백을 두고 주어진다. (1≤a_i≤109)(1 \leq a\_i \leq 10^9)

각 테스트 케이스의 다음 MM줄에 각 간선의 출발 정점과 도착 정점 u_iu\_i, v_iv\_i가 공백을 두고 주어진다. (1≤u_i<v_i≤N)(1\leq u\_i < v\_i \leq N)

중복간선이 없고 모든 정점의 외차수(outdegree)가 2 이하임이 보장된다. 즉, 서로 다른 두 정수 i,ji, j에 대해 항상 (u_i,v_i)≠(u_j,v_j)(u\_i, v\_i) \neq (u\_j, v\_j)이며 u_i=xu\_i=x를 만족하는 ii가 3개 이상이 되게하는 xx는 존재하지 않는다.

모든 테스트 케이스에서 NN의 합은 200 000200\ 000을 넘지 않는다.

출력

각 테스트 케이스의 첫째 줄에 피돌이가 선공이었다면 First, 후공이었다면 Second를 출력한다.

예제1

  1. 예제 1

    입력
    2
    4 4
    2 2 2 1
    2 3
    2 4
    1 4
    3 4
    4 4
    2 2 1 1
    2 3
    2 4
    1 4
    3 4
    
    예상 출력
    First
    Second