포럼
문제 USACO0573

관리인의 청소

설명

무텔(mootel, 모텔과 비슷하지만 사람 대신 소 손님이 묵는 곳)의 무질서한 구조 때문에, 농부 존은 무텔 관리인 역할을 맡아 축사의 질서를 되찾기로 결심했다.

각 무텔에는 \(1\)부터 \(N\)까지 번호가 매겨진 \(N\)개의 축사(\(1 \le N \le 10^5\))와 축사 쌍들을 양방향으로 연결하는 \(M\) (\(0 \le M \le 10^5\))개의 복도가 있다. \(i\)번째 축사는 색 \(C_i\)로 칠해져 있고 처음에 색 \(S_i\)의 열쇠 하나가 들어 있다. 농부 존은 소들을 달래고 축사의 질서를 되찾기 위해 열쇠들을 재배치해야 한다.

농부 존은 열쇠를 하나도 들지 않은 채 축사 \(1\)에서 시작하며, 다음 행동 중 하나를 반복해서 할 수 있다:

  • 현재 있는 축사의 열쇠를 집는다. 농부 존은 한 번에 여러 개의 열쇠를 들 수 있다.
  • 들고 있는 열쇠 하나를 현재 있는 축사에 내려놓는다. 한 축사에 여러 개의 열쇠가 있을 수 있다.
  • 복도를 통해 이동하여 축사 \(1\)에 들어간다.
  • 복도를 통해 이동하여 축사 \(1\) 이외의 축사에 들어간다. 이는 들어가려는 축사와 같은 색의 열쇠를 현재 들고 있을 때만 가능하다.

안타깝게도 열쇠들이 의도된 위치에 있지 않은 것 같다. 농부 존의 무텔의 질서를 되찾으려면, \(i\)번째 축사에 색 \(F_i\)의 열쇠 하나가 있어야 한다. \(S\)\(F\)의 순열임이 보장된다.

\(T\)개의 서로 다른 무텔(\(1 \le T \le 100\))에 대해, 농부 존은 축사 \(1\)에서 시작하여 모든 열쇠를 적절한 위치에 놓고 축사 \(1\)로 돌아와야 한다. \(T\)개의 무텔 각각에 대해, 이것이 가능한지 답하라.

출제자: Eric Yachbes

제약

배점

  • 테스트 케이스 3-6은 \(N,M\le 8\)을 만족한다.
  • 테스트 케이스 7-10은 \(C_i=F_i\)를 만족한다.
  • 테스트 케이스 11-18은 추가 제약 조건이 없다.

출제자: Eric Yachbes

입력 형식

첫째 줄에 무텔(테스트 케이스)의 개수 \(T\)가 주어진다.

각 테스트 케이스 앞에는 빈 줄이 하나 있다. 그런 다음, 각 테스트 케이스의 첫째 줄에 두 정수 \(N\)\(M\)이 주어진다.

각 테스트 케이스의 둘째 줄에 \(N\)개의 정수가 주어진다. 이 줄의 \(i\)번째 정수 \(C_i\)는 축사 \(i\)의 색이 \(C_i\)임을 의미한다 (\(1 \le C_i \le N\)).

각 테스트 케이스의 셋째 줄에 \(N\)개의 정수가 주어진다. 이 줄의 \(i\)번째 정수 \(S_i\)는 축사 \(i\)에 처음에 색 \(S_i\)의 열쇠가 있음을 의미한다 (\(1 \le S_i \le N\)).

각 테스트 케이스의 넷째 줄에 \(N\)개의 정수가 주어진다. 이 줄의 \(i\)번째 정수 \(F_i\)는 축사 \(i\)에 색 \(F_i\)의 열쇠가 있어야 함을 의미한다 (\(1 \le F_i \le N\)).

각 테스트 케이스에서 다음 \(M\)개의 줄이 이어진다. 이 중 \(i\)번째 줄에는 서로 다른 두 정수 \(u_i\)\(v_i\) (\(1 \le u_i, v_i \le N\))가 주어진다. 이는 축사 \(u_i\)\(v_i\) 사이에 복도가 존재함을 나타낸다. 중복되는 복도는 없다.

모든 무텔에 대한 \(N\)의 합은 \(10^5\)를 넘지 않고, 모든 무텔에 대한 \(M\)의 합은 \(2\cdot 10^5\)를 넘지 않는다.

출력 형식

각 무텔에 대해, 농부 존이 각 축사 \(i\)에 색 \(F_i\)의 열쇠를 되돌려 놓고 축사 \(1\)로 돌아올 수 있는 방법이 존재하면 YES를 새 줄에 출력한다. 그렇지 않으면 NO를 새 줄에 출력한다.

예제 1
입력
2

5 5
4 3 2 4 3
3 4 3 4 2
2 3 4 4 3
1 2
2 3
3 1
4 1
4 5

4 3
3 2 4 1
2 3 4 4
4 2 3 4
4 2
4 1
4 3
출력
YES
NO
설명

For the first test case, here is a possible sequence of moves:

Current stall: 1. Keys held: []. Keys in stalls: [3, 4, 3, 4, 2]
(pick up key of color 3)
Current stall: 1. Keys held: [3]. Keys in stalls: [x, 4, 3, 4, 2]
(move from stall 1 to 2, allowed since we have a key of color C_2=3)
Current stall: 2. Keys held: [3]. Keys in stalls: [x, 4, 3, 4, 2]
(pick up key of color 4)
Current stall: 2. Keys held: [3, 4]. Keys in stalls: [x, x, 3, 4, 2]
(move from stall 2 to 1 to 4 to 5, allowed since we have keys of colors C_4=4 and C_5=3)
Current stall: 5. Keys held: [3, 4]. Keys in stalls: [x, x, 3, 4, 2]
(pick up key of color 2 and place key of color 3)
Current stall: 5. Keys held: [2, 4]. Keys in stalls: [x, x, 3, 4, 3]
(move from stall 5 to 4 to 1 to 3, allowed since we have keys of colors C_4=4 and C_3=2)
Current stall: 3. Keys held: [2, 4]. Keys in stalls: [x, x, 3, 4, 3]
(pick up key of color 3 and place key of color 4)
Current stall: 3. Keys held: [2, 3]. Keys in stalls: [x, x, 4, 4, 3]
(move from stall 3 to stall 2 and place key of color 3)
Current stall: 2. Keys held: [2]. Keys in stalls: [x, 3, 4, 4, 3]
(move from stall 2 to stall 1 and place key of color 2)
Current stall: 1. Keys held: []. Keys in stalls: [2, 3, 4, 4, 3]

For the second test case, there exists no way for FJ to return a key of color
\(F_i\) to each stall \(i\) and end back at stall \(1\).

예제 2
입력
5

2 0
1 2
2 2
2 2

2 1
1 1
2 1
2 1
1 2

2 1
1 1
2 1
1 2
1 2

2 1
1 1
1 2
2 1
1 2

5 4
1 2 3 4 4
2 3 5 4 2
5 3 2 4 2
1 2
1 3
1 4
4 5
출력
YES
YES
NO
YES
NO
문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2022-2023 > US Open > Gold

태그

평가 및 의견

Custodial Cleanup

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

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

풀이 제출

Custodial Cleanup

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