CF2135C.By the Assignment
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个无向连通图,包含 n 个顶点,第 i 个顶点的权值为 vi。我们定义一条简单路径 l1,l2,…,lm 的值为 vl1⊕vl2⊕⋯⊕vlm。我们称图是“平衡”的,当且仅当:
- 对于任意 1≤p<q≤n,所有从 p 到 q 的简单路径的值都相同。
Aquawave 给你一个包含 n 个顶点 m 条边的无向连通图,每个顶点 i 的权值为 ai。但部分权值未知,以 −1 表示。
Aquawave 想要为所有 ai=−1 的顶点分配一个 0 到 V−1 之间的整数权值,使得该图是“平衡”的。
你的任务是帮助 Aquawave 计算总共有多少种权值分配方案可以让图平衡,答案对 998244353 取模。
注1:一条从顶点 c 到 d 的简单路径是顶点序列 l1,l2,…,lm,其中 l1=c,lm=d,任意相邻两个顶点之间有边连接,且所有顶点不重复,即 li=lj。
注2:⊕ 表示 按位异或运算。
输入格式
每个测试点包含多组测试数据。第一行一个整数 t (1≤t≤104),表示测试组数。
每组测试数据的第一行包含三个整数 n,m,V(2≤n≤2⋅105,n−1≤m≤min(2n(n−1),4⋅105),1≤V≤109)——顶点数、边数和权值上界。
第二行包含 n 个整数 a1,a2,…,an(−1≤ai≤V−1)——每个顶点的权值,ai=−1 表示第 i 个顶点的权值未知。
接下来 m 行,每行两个整数 u,v(1≤u,v≤n),表示一条无向边连接 u 和 v。
保证给定图是简单图且连通。
保证所有测试数据中 n 之和不超过 2⋅105,m 之和不超过 4⋅105。
输出格式
对于每组测试数据,输出一个整数,表示能使图平衡的权值分配方案数,对 998244353 取模。
输入输出样例
输入#1
5 4 4 4 -1 -1 -1 -1 1 2 2 3 1 3 4 3 5 6 7 2 2 -1 2 2 1 2 1 3 1 4 2 5 3 5 4 5 7 8 9 -1 -1 -1 -1 0 -1 0 1 2 2 3 3 4 1 4 1 5 5 6 7 6 7 5 5 8 1000000000 1 2 3 4 -1 1 2 3 2 3 5 5 1 2 4 4 3 2 5 1 4 5 4 1000000000 -1 2 -1 3 -1 1 2 1 3 2 4 2 5
输出#1
4 1 9 0 747068572
说明/提示
在第一个样例中,有四种分配方式:
- a=[0,0,0,0];
- a=[0,0,0,1];
- a=[0,0,0,2];
- a=[0,0,0,3]。
可证明每种分配都能使图平衡。
在第二个样例中,任选 (p,q)=(1,5)。简单路径 1→2→5 的值为 2⊕2⊕2=2,而 1→3→5 的值为 2⊕a3⊕2=a3,因此 a3 只能为 2。可验证 a3=2 能使图平衡。
在第五个样例中,给定图是一棵树,所以任意两个顶点之间仅有一条简单路径。此时每个 ai 都可以任意取 0 到 V−1,方案数为 10000000003mod998244353=747068572。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?