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 翻译