RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
문제 KOI00149

게임

설명

앨리스와 밥은 N개의 방과 이 방들을 연결하는 통로들로 이루어진 미로에서 게임을 하려고 한다.

미로의 방에는 1, 2, ···, N의 번호가 붙어 있다. 미로의 어떤 방들은 출구를 가지고 있는데, i (1 ≤ i ≤ N)번 방에는 Aᵢ = 1이면 출구가 있고, Aᵢ = 0이면 없다.

미로를 연결하는 통로는 정확히 M쌍의 방 중 하나의 쌍을 연결한다. 같은 쌍의 방을 잇는 통로가 여러 개 존재할 수 있다.

구체적으로는, 각 i (1 ≤ i ≤ M)에 대하여, aᵢ번 방과 bᵢ번 방을 잇는 서로 다른 통로가 cᵢ개 존재한다.

임의의 두 방 사이를 통로들을 통해 오갈 수 있음이 보장되지 않음에 유의하라.

앨리스와 밥은 총 Q번의 게임을 하려고 하는데, j (1 ≤ j ≤ Q)번째 게임은 다음과 같이 진행된다.

• 앨리스가 미로의 sⱼ번 방으로 들어간다.
• 앨리스는 다음 규칙에 따라 인접한 방으로 이동할 수 있다.
• 앨리스가 현재 x번 방에 있다고 하자.
앨리스는 x번 방과 연결된 kⱼ개의 서로 다른 통로를 고른다. 이때 같은 방을 연결하는 여러 통로를 동시에 고를 수 있다. 만약 x번 방과 연결된 통로의 수가 kⱼ보다 작아 서로 다른 kⱼ개의 통로를 고르는 것이 불가능할 경우, 이동할 수 없다.
• 앨리스가 선택을 마친 후 밥은 앨리스가 고른 kⱼ개의 통로 중 하나를 고른다.
• 앨리스는 밥이 고른 통로가 있는 반대쪽 방으로 이동한다.
• 앨리스가 위 규칙에 따라 다른 방으로 이동하는 것을 0번 이상 반복하여 출구가 있는 방에 도달하면 승리한다.

sⱼ번 방에 출구가 있는 경우, 게임이 시작할 때 앨리스가 있는 방에 출구가 있으므로 앨리스가 승리할 수 있음에 유의하라.

앨리스는 자신이 승리하기 위해서 최선을 다하며, 밥 역시 앨리스가 승리하지 못하게 하기 위해 최선을 다한다. 즉, 게임 중 밥이 어떤 선택을 하더라도 앨리스가 매 순간 적절한 선택을 하여 항상 출구가 있는 방에 도달할 수 있다면 앨리스가 승리하고, 그렇지 않으면 승리할 수 없다.

각 게임에 대해, 앨리스가 게임에서 승리할 수 있을지 아닐지를 판정하라.

제약

• 주어지는 모든 수는 정수이다.
• 1 ≤ N ≤ 200000
• 0 ≤ M ≤ 400000
• 1 ≤ Q ≤ 200000
• 정수 i (1 ≤ i ≤ N)에 대하여, Aᵢ는 0 또는 1이다.
• 정수 i (1 ≤ i ≤ M)에 대하여 1 ≤ aᵢ < bᵢ ≤ N
• 서로 다른 두 정수 i, j (1 ≤ i, j ≤ M)에 대하여, aᵢ ≠ aⱼ 또는 bᵢ ≠ bⱼ이다.
• 정수 i (1 ≤ i ≤ M)에 대하여 1 ≤ cᵢ ≤ 1000000000
• 정수 j (1 ≤ j ≤ Q)에 대하여 1 ≤ sⱼ ≤ N
• 정수 j (1 ≤ j ≤ Q)에 대하여 1 ≤ kⱼ ≤ 1000000000000000000

입력 형식

첫 줄에 미로의 방의 수를 나타내는 정수 N, 통로 종류의 수를 나타내는 정수 M, 앨리스와 밥이 진행할 게임의 수를 나타내는 정수 Q가 공백으로 구분되어 차례대로 주어진다.

그다음 줄에 N개의 정수 A₁, A₂, ···, Aₙ이 공백으로 구분되어 차례대로 주어진다.

그다음 M개의 줄에 걸쳐, 통로에 대한 정보가 주어진다. 이 중 i (1 ≤ i ≤ M)번째 줄에는 세 정수 aᵢ, bᵢ, cᵢ가 공백으로 구분되어 차례대로 주어진다. 이는 미로에 aᵢ번 방과 bᵢ번 방을 연결하는 cᵢ개의 통로가 있음을 의미한다.

그다음 Q개의 줄에 걸쳐, 앨리스와 밥이 진행할 Q번의 게임에 대한 정보가 주어진다. 이 중 j (1 ≤ j ≤ Q)번째 줄에는 두 정수 sⱼ와 kⱼ가 공백으로 구분되어 차례대로 주어진다.

출력 형식

첫 줄부터 Q개의 줄에 걸쳐, 답을 출력한다. 이 중 j (1 ≤ j ≤ Q)번째 줄에는 j번째 게임에 대하여 앨리스가 승리할 수 있다면 YES, 그렇지 않다면 NO를 출력해야 한다.

서브태스크
서브태스크점수설명

Subtask 1

6점

M=N-1, a_i=i, b_i=i+1 (a path); exit only in room 1 (A_1=1, others 0)

Subtask 2

8점

M=N-1, a_i=1, b_i=i+1 (a star centered at room 1)

Subtask 3

7점

all k_j = 1

Subtask 4

14점

all k_j equal

Subtask 5

15점

all s_j equal

Subtask 6

16점

N<=3000, M<=3000, all k_j<=3000

Subtask 7

34점

no additional constraints

예제 1
입력
5 5 5
0 0 1 0 0
1 2 1
1 3 1
1 4 2
2 3 2
3 4 1
2 1
1 2
3 3
4 4
5 1
출력
YES
YES
YES
NO
NO
설명

이 예제에서, 미로에는 총 5개의 방과 7개의 통로가 있고, 출구는 3번 방에만 있다. 앨리스와 밥은 총 5번의 게임을 진행한다.

첫 번째 게임에서 앨리스는 처음에 2번 방에 있고, 이동 시 1개의 통로를 골라야 한다. 앨리스가 처음에 3번 방으로 향하는 통로를 하나 고르면 밥도 같은 통로를 고르게 되고, 출구가 있는 3번 방으로 이동하여 게임에서 승리할 수 있다.

두 번째 게임에서 앨리스는 처음에 1번 방에 있고, 이동 시 2개의 통로를 골라야 한다. 앨리스는 2번 방으로 향하는 통로 하나와 3번 방으로 향하는 통로 하나를 고를 수 있다. 밥이 3번 방으로 향하는 통로를 고르면 앨리스는 바로 출구가 있는 3번 방으로 이동한다. 밥이 2번 방으로 향하는 통로를 고르면 앨리스는 2번 방에서 3번 방으로 향하는 두 통로를 고를 수 있으므로, 다음 이동에서 출구가 있는 3번 방에 도달할 수 있다. 따라서 앨리스가 승리할 수 있다.

세 번째 게임에서 앨리스는 처음에 출구가 있는 3번 방에 있으므로, 이동하지 않고도 승리할 수 있다.

네 번째 게임에서 앨리스는 처음에 4번 방에 있고, 이동 시 4개의 통로를 골라야 한다. 하지만 4번 방과 연결된 통로는 총 3개이므로 이동할 수 없다. 4번 방에는 출구가 없으므로 앨리스는 승리할 수 없다.

다섯 번째 게임에서 앨리스는 처음에 5번 방에 있다. 5번 방에는 출구가 없고 다른 방으로 연결된 통로도 없으므로 앨리스는 승리할 수 없다.

예제 2
입력
4 3 4
1 0 0 0
1 2 2
2 3 3
3 4 1
1 3
2 2
3 3
4 1
출력
YES
YES
NO
YES
예제 3
입력
4 3 3
0 1 1 0
1 2 1
1 3 3
1 4 2
4 2
1 3
4 3
출력
YES
YES
NO
예제 4
입력
2 0 2
1 0
1 1
2 1
출력
YES
NO
문제 정보

anthony0506 작성

출처 KOI

평가 및 의견

게임

개요
출제자 난이도 Platinum II 플래티넘 II 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

게임

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8