#P16176. [ICPC 2014 NAIPC] Diplomacy
[ICPC 2014 NAIPC] Diplomacy
题目描述
你是一个由强大独裁者统治的古代帝国的参议员。你加入了一个由参议院两党成员组成的秘密委员会,该委员会正在密谋推翻独裁者。
为了使密谋成功,至关重要的是帝国中的所有州最终都要支持该计划——为了实现这一点,所有州的州长都需要成为同一党派的成员。
目前,每位州长要么是橙党(Orange Party)成员,要么是紫党(Purple Party)成员。由于你有信心让任何一方支持密谋,因此最终哪一方获胜并不重要。
秘密委员会研究了政治局势,并确定:如果两位州长是朋友关系且属于同一党派,他们就会相互影响。为了让所有州长都加入计划,每月会有一次游说活动,游说者会尽一切努力让一位州长转换党派。当这种情况发生时,该州长的所有属于同一党派的朋友也会随之转换党派,这些朋友的朋友也会在党内转换,依此类推。为了不被察觉,秘密委员会将每月交替派遣橙党/紫党的游说者。他们可以在第一个月从任意一个党派开始。
秘密委员会还知道哪些州长是朋友关系,每位州长至少有一位朋友,并且不存在只与彼此为朋友的孤立群体。
你的任务是确定所有州长成为同一党派成员所需的最少月数。一旦达到这一状态,密谋的后续步骤就可以进行。
输入格式
输入中有多个测试用例。每个测试用例的第一行包含两个整数 ()和 (),其中 是州长人数, 是已知的朋友关系数。下一行包含 个整数(0 或 1),按顺序表示州长当前的党派归属(0 = 橙党,1 = 紫党)。接下来的 行,每行包含两个整数 和 (),表示州长 和州长 是朋友关系。如同现实生活,友谊是双向的:如果 是 的朋友,那么 也是 的朋友。所有 个 对都是唯一的。输入以一行两个 0 结束。测试数据大小约 64 KB。
输出格式
对于每个测试用例,输出一个整数,表示所有州长成为同一党派成员所需的最少月数。每个整数输出在自己的行上,不要包含空格。输出之间不要打印空行。
4 3
0 1 0 0
1 2
2 3
2 4
5 4
0 1 1 0 1
1 2
2 3
3 4
4 5
0 0
1
2
提示
翻译由 DeepSeek V3.2 完成