만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

게임이론

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

요약
두 사람이 연결된 그래프의 정점에서 돌을 번갈아 가져가고, 간선을 따라 이동하거나 제자리에 머문다. 최적으로 둘 때 시작 정점 s에서 이기는 사람을 구한다.
난이도

어려움10점 중 9점

유형
게임 이론, 그래프, DFS
정답자
아직 제출이 없습니다

문제

효원이와 승재는 다음과 같은 게임을 한다. 게임은 정점 1,2,⋯ ,n1,2,\cdots,n을 간선으로 연결한 그래프 위에서 진행된다. 이 그래프에서는 임의의 두 정점 사이에 경로가 존재하고, 모든 정점은 자기 자신과 연결된 loop를 가진다. 각 정점 ii에는 돌이 wi>0w_i>0개 놓인 상태로 게임이 시작된다.

효원이는 정점 ss에서 시작한다. 두 사람은 번갈아 가며 그래프 위를 움직이면서 돌을 제거한다.

  • 현재 위치한 정점을 uu, 정점 uu에 있는 돌의 개수를 ww라고 하자. 정점 uu에서 돌을 최소 11개, 최대 ww개까지 제거한다.
  • uu에 연결된 정점으로 이동한다. Loop가 있으므로 uu에서 uu로 이동하는 것도 가능하다. 도착한 정점의 돌이 00개라면 한 번 더 이동해야 한다. 즉, 돌이 00이 아닌 정점에 도착할 때까지 돌이 없는 정점은 통과한다. 돌이 있는 정점에 멈추면 상대방의 턴이 시작된다.

마지막 돌을 제거하는 사람이 이긴다. 다음은 한 게임 플레이의 예시다. 효원이와 승재가 아직 규칙을 잘 모르는 상태에서 플레이했기 때문에 최적으로 플레이하지 않았을 수도 있다.

이제 효원이와 승재는 이 게임의 규칙을 잘 이해한다. 두 사람이 모두 최적으로 게임을 할 때 누가 이기는지 판정하라.

입력

첫째 줄에는 정점의 수 nn, 간선의 수 mm, 게임을 시작하는 정점 ss가 주어진다. 그래프에서는 임의의 두 정점 사이에 경로가 존재하며, 모든 정점은 자기 자신과 연결된 loop를 가진다. 제한은 1≤n≤50,0001\leq n\leq 50,000, 2n−1≤m≤500,0002n-1\leq m\leq 500,000이다.

둘째 줄에는 각 정점에 있는 돌의 개수 w1,w2,⋯ ,wnw_1,w_2,\cdots,w_n이 공백으로 구분되어 주어진다. 모든 정점의 돌 개수는 11개 이상 2202^{20}개 미만이다.

셋째 줄부터 (m+2)(m+2)번째 줄까지 간선 정보가 두 수 uu와 vv로 주어진다. 이는 uu와 vv 사이에 무방향 간선이 있다는 뜻이다. u=vu=v일 수 있다.

출력

두 사람이 모두 최적으로 게임을 할 때 이기는 사람을 출력한다. 효원이가 이기면 "hwy", 승재가 이기면 "sjh"를 따옴표 없이 출력한다.

예제4

  1. 예제 1

    입력
    1 1 1
    4
    1 1
    예상 출력
    hwy
    
  2. 예제 2

    입력
    2 3 1
    1 1
    1 1
    1 2
    2 2
    예상 출력
    sjh
    
  3. 예제 3

    입력
    2 3 1
    1 2
    1 1
    1 2
    2 2
    예상 출력
    sjh
    
  4. 예제 4

    입력
    2 3 1
    2 1
    1 1
    1 2
    2 2
    예상 출력
    hwy