#P13176. [GCJ 2017 #3] Good News and Bad News
[GCJ 2017 #3] Good News and Bad News
Description
你希望让你的 个朋友之间互相传递一些消息。你非常了解你的朋友们,因此你知道哪些朋友可以和哪些其他朋友交流。共有 个这样的单向关系,每个关系是一个有序对 ,表示朋友 可以和朋友 交流。这并不意味着朋友 也可以和朋友 交流;不过,另一个有序对可能会使得这种情况成立。
对于每一个存在的有序对 ,你希望朋友 向朋友 传递一条消息。每条消息用一个整数值表示;消息的大小由其绝对值给出,消息的类型(好消息或坏消息)由其符号给出。整数不能为 (否则就没有消息了!),并且其绝对值不能大于 (否则消息就太激动人心了!)。这些整数值对于不同的有序对可以不同。
因为你很关心朋友们的感受,对于每个朋友,所有由该朋友发出的消息的值之和,必须等于所有传递给该朋友的消息的值之和。如果某个朋友没有发出任何消息,则该和视为 ;如果某个朋友没有收到任何消息,该和也视为 。
你能否为你的朋友们找到一组满足上述规则的消息值,或者判断这是不可能的?
Input Format
输入的第一行是测试用例数 。接下来有 组测试用例。每组测试用例的第一行为两个整数 和 ,分别表示朋友的数量和不同的有序朋友对的数量。接下来的 行,每行有两个不同的整数 和 ,表示朋友 可以和朋友 交流。朋友编号从 到 。
Output Format
对于每个测试用例,输出一行,格式为 Case #x: y,其中 是测试用例编号(从 开始), 要么是 IMPOSSIBLE(如果不存在满足条件的方案),要么是 个整数,每个都非零且在区间 内。这 个整数中的第 个对应输入中的第 个有序对,表示第一个朋友向第二个朋友传递的消息值。所有消息值的集合必须满足题目中的所有条件。
如果有多组可行解,你可以输出其中任意一组。
5
2 2
1 2
2 1
2 1
1 2
4 3
1 2
2 3
3 1
3 4
1 2
2 3
3 1
2 1
3 3
1 3
2 3
1 2
Case #1: 1 1
Case #2: IMPOSSIBLE
Case #3: -1 -1 -1
Case #4: 4 -4 -4 8
Case #5: -1 1 1
Hint
样例解释
样例输出展示了一组可行答案。其他可行答案也是允许的。
在样例第 1 组中,一种可接受的方案是让朋友 向朋友 传递值为 的消息,朋友 向朋友 传递值为 的消息。
在样例第 2 组中,无论朋友 向朋友 传递什么非零消息,朋友 收到的消息之和都不是 。但朋友 无法向任何人传递消息,因此其发出的消息之和为 。所以朋友 发出和收到的消息之和无法相等,因此该组为 IMPOSSIBLE。
在样例第 3 组中,朋友 各自向能交流的朋友传递值为 的消息——形成了一个不幸的坏消息循环!注意,朋友 既不发出也不接收任何消息,这同样满足规则。
在样例第 4 组中, 不是一个可接受的答案,因为有 个朋友,且 。
在样例第 5 组中,必须至少使用一个负值才能得到可行解。
数据范围
- 。
- 对所有 ,。
- 对所有 ,。
- 对所有 ,。(朋友不会和自己交流。)
- 对所有 ,。(同一组测试用例中不会有重复的有序对。)
小数据集(测试集 1 - 可见)
- 时间限制:
205 秒。 - 。
- 。
大数据集(测试集 2 - 隐藏)
- 时间限制:
4010 秒。 - 。
- 。
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号