QOJ.ac

QOJ

时间限制: 2.0 s 内存限制: 256 MB 总分: 100 可 Hack ✓

#17746. 비버 모니터링

统计

MITIT(Monitored Industrious Timbercrafters Infrastructure Technology)는 $1, \dots, N$ 번호가 매겨진 $N$마리의 비버로 구성되어 있습니다. $M$개의 비버 쌍 $(u_i, v_i)$가 존재하며, 처음에 비버 $u_i$는 비버 $v_i$를 감시합니다. 모든 비버는 항상 적어도 한 마리의 다른 비버에게 감시받아야 합니다.

MITIT의 관리자인 Busy Beaver는 이러한 감시 관계를 재구성하고자 합니다. 한 번의 연산으로 비버 $u$가 비버 $v$를 감시하고 있는 쌍 $(u, v)$를 선택하여, 비버 $v$가 비버 $u$를 감시하도록 바꿀 수 있습니다. 단, 모든 비버가 항상 적어도 한 마리의 다른 비버에게 감시받아야 한다는 조건을 만족해야 합니다.

Busy Beaver가 원하는 최종 구성은 길이 $M$인 문자열 $d$로 설명할 수 있습니다. $d_i = 0$이면 최종적으로 비버 $u_i$가 비버 $v_i$를 감시하고, $d_i = 1$이면 비버 $v_i$가 비버 $u_i$를 감시합니다. 이 최종 구성에 도달하기 위한 최소 연산 횟수와 그 과정을 구하거나, 불가능한 경우 이를 보고하십시오.

입력

각 테스트 케이스는 여러 개의 테스트 케이스를 포함합니다. 첫 번째 줄에는 테스트 케이스의 수 $T$ ($1 \le T \le 10^4$)가 주어집니다. 각 테스트 케이스에 대한 설명이 이어집니다.

각 테스트 케이스의 첫 번째 줄에는 두 정수 $N$과 $M$ ($3 \le N \le M \le 10^5$)이 주어집니다.

다음 $M$개의 줄 중 $i$번째 줄에는 두 정수 $u_i$와 $v_i$ ($1 \le u_i, v_i \le N, u_i \ne v_i$)가 주어집니다. $1 \le i < j \le M$에 대하여 $(u_i, v_i) = (u_j, v_j)$이거나 $(u_i, v_i) = (v_j, u_j)$인 경우는 존재하지 않습니다.

다음 줄에는 문자열 $d_1 \dots d_M$이 주어지며, 모든 $1 \le i \le M$에 대해 $d_i \in \{0, 1\}$입니다.

초기 구성과 최종 구성 모두에서 각 비버는 적어도 한 마리의 다른 비버에게 감시받음이 보장됩니다.

모든 테스트 케이스에 대한 $N$의 합은 $10^5$를 넘지 않습니다.

모든 테스트 케이스에 대한 $M$의 합은 $10^5$를 넘지 않습니다.

출력

각 테스트 케이스에 대하여, 작업이 불가능하다면 $-1$을 출력하십시오.

그렇지 않다면, 먼저 연산 횟수 $K$를 출력하십시오. 다음 줄에는 $K$개의 정수 $a_1, \dots, a_K$ ($1 \le a_i \le M$)를 출력하며, 이는 순서대로 $(u_{a_i}, v_{a_i})$에 대해 연산을 수행함을 의미합니다.

서브태스크

전체 점수를 받으려면 $K$는 항상 가능한 최소 연산 횟수여야 합니다. 그렇지 않은 경우, 모든 테스트 케이스에 걸친 $K$의 합이 $10^6$을 넘지 않는 유효한 연산 순서를 올바르게 출력하면 각 서브태스크 점수의 $50\%$를 받습니다.

  • ($50$점) $M \le 300$.
  • ($50$점) 추가 제약 조건 없음.

예제

예제 입력 1

3
4 5
1 2
2 3
3 1
1 4
4 3
11000
6 6
1 2
2 3
3 1
4 5
5 6
6 4
111111
3 3
1 2
2 3
3 1
000

예제 출력 1

2
2 1 
-1
0

참고

첫 번째 테스트 케이스의 연산은 아래와 같습니다. 비버 $2$는 항상 감시받아야 하므로 연산을 반대 순서로 수행하는 것은 허용되지 않음에 유의하십시오.

두 번째 테스트 케이스에서는 최종 구성에 도달하는 것이 불가능합니다.

세 번째 테스트 케이스에서는 수행해야 할 연산이 없습니다.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.