CF1773J Jumbled Trees
题目描述
给定一个无向连通图,包含 $n$ 个顶点和 $m$ 条边。每条边都关联一个计数器,初始值为 $0$。每次操作,你可以任选一棵生成树,并将任意值 $v$ 加到这棵生成树上的所有边的计数器上。
请判断是否可以使每条边的计数器都等于其目标值 $x_i$(模质数 $p$ 意义下),并给出一组实现该目标的操作序列。
输入格式
第一行包含三个整数 $n$、$m$ 和 $p$,分别表示顶点数、边数和模数($1 \le n \le 500$;$1 \le m \le 1000$;$2 \le p \le 10^9$,$p$ 为质数)。
接下来的 $m$ 行,每行包含三个整数 $u_i$、$v_i$、$x_i$,分别表示第 $i$ 条边的两个端点和该边计数器的目标值($1 \le u_i, v_i \le n$;$0 \le x_i < p$;$u_i \neq v_i$)。
保证图是连通的。不存在自环,但同一对顶点之间可能有多条边。
输出格式
如果无法实现目标计数器值,输出 $-1$。
否则,输出操作次数 $t$,接下来 $t$ 行,每行描述一次操作。每行首先是一个整数 $v$($0 \le v < p$),表示本次操作的计数器增量,随后是 $n-1$ 个整数 $e_1, e_2, \ldots, e_{n-1}$($1 \le e_i \le m$),表示本次操作选取的生成树的边编号。
操作次数 $t$ 不超过 $2m$。你不需要让 $t$ 最小化。只要答案满足 $t \le 2m$ 即可。允许重复选择生成树。
说明/提示
由 ChatGPT 4.1 翻译