ccf#WC2021. 括号路径

括号路径

题目描述

给定一张 nn 个点 2m2 m 条边的有向图,图中的每条边上都有一个标记,代表一个左括号或者右括号。共有 kk 种不同的括号类型,即图中可能有 2k2 k 种不同的标记。点、边、括号种类均从 11 开始编号。

图中的每条边都会和另一条边成对出现。更具体地,若图中存在一条标有第 ww 种括号的左括号的边 (u,v)(u, v),则图中一定存在一条标有第 ww 种括号的右括号的边 (v,u)(v, u)。同样地,图中每条标有右括号的边将对应着一条反方向的标有同类型左括号的边。

现在请你求出,图中共有多少个点对 (x,y)(x, y)1x<yn1 \le x < y \le n)满足:图中存在一条从 xx 出发到达 yy 的路径,且按经过顺序将路径各条边上的标记拼接得到的字符串是一个合法的括号序列。

输入格式

第一行三个整数 n,m,kn, m, k,分别表示图中的点数,边对数和括号类型数。

接下来 mm 行,每行三个整数 u,v,wu, v, w,表示一条从 uuvv 的有向边,其标记为第 ww 种括号的左括号;以及一条从 vvuu 的有向边,其标记为第 ww 种括号的右括号。

输入给出的图中,任意两个不同的顶点间可以有多条有向边相连,但图中不存在连向自身的有向边,即 uvu \ne v

输出格式

输出仅一行一个整数,表示满足条件的点对数量。

4 5 1
4 3 1
4 1 1
4 2 1
1 3 1
2 1 1
3
6 8 2
6 1 2
3 5 1
1 2 2
5 1 2
3 6 2
4 3 1
6 2 2
3 2 1
10

样例 3

见附加文件中的 bracket3.inbracket3.ans

样例 4

见附加文件中的 bracket4.inbracket4.ans

数据范围与提示

对于所有测试点:1n3×1051 \le n \le 3 \times {10}^51m6×1051 \le m \le 6 \times {10}^51k,u,vn1 \le k, u, v \le n1wk1 \le w \le k

每个测试点的具体限制见下表:

测试点编号 n=n = mm \le kk \le 特殊限制
141 \sim 4 44 55 22
585 \sim 8 88 1010
9129 \sim 12 30003000 60006000 11
131613 \sim 16 n1n - 1 nn 不存在仅由带左括号标记的边构成的环
172017 \sim 20 3×1053 \times {10}^5
212521 \sim 25 6×1056 \times {10}^5