#P4499. [CTSC2011] 无穷图的桥

[CTSC2011] 无穷图的桥

题目描述

本题的目标是求一个点数无穷的无向图的桥。

这个无向图具有如下性质:

  1. 这个图是一个连通图。

  2. 这个图的所有节点分为若干层,分别是第 11 层、第 22 层、第 33 层 ⋯\cdots 共有无穷层,每层共有 nn 个节点。为了描述方便,以下用 (i,x)\left(i, x\right) 表示第 ii 层的 xx 号节点。

  3. 同一层内的节点可以相互连边,相邻两层的节点之间可以相互连边,除此之外,其他节点之间不能相互连边。

  4. 如果 (i,x)\left(i, x\right) 与 (i,y)\left(i, y\right) 之间有一条权值为 dd 的边,那么 (j,x)\left(j, x\right) 与 (j,y)\left(j, y\right) 之间也有一条边,它的权值为 0.9j−id0.9^{j-i}d,其中 jj 为任意正整数。

  5. 如果 (i,x)\left(i, x\right) 与 (i+1,y)\left(i + 1, y\right) 之间有一条权值为 dd 的边,那么 (j,x)\left(j, x\right) 与 (j+1,y)\left(j+1, y\right) 之间也有一条边,它的权值为 0.9j−id0.9^{j-i}d,其中 jj 为任意正整数。如下所示的无向图就符合上面的所有性质。

一个点数无穷的无向图是连通的,当且仅当对于图中的任意两个节点都存在一条路径将它们连接起来。而一条边是桥,当且仅当这条边被删去后整个图不连通。

请你编写程序读入这个点数无穷的连通图,求出其中所有桥的权值之和。例如,在上图中,粗线所示的边就是该图唯一的桥,因此上图中桥的权值之和为 11。

输入格式

输入文件 infinite.in 第一行包括三个由空格隔开的非负数 nn、m1m_1、m2m_2。从第 22 行到第 m1+1m_1+ 1 行,每行有三个正整数 xx、yy、dd,表示 (1,x)\left(1, x\right) 与 (1,y)\left(1, y\right) 之间有一条权值为 dd 的边。

从第 m1+2m_1+ 2 行到第 m1+m2+1m_1+ m_2+ 1 行,每行有三个正整数 xx、yy、dd,表示 (1,x)\left(1, x\right) 与 (2,y)\left(2, y\right) 之间有一条权值为 dd 的边。每行的三个整数之间都用一个空格隔开。

图中两个点 xx 和 yy 之间可能有多于 11 条边连接,一条边连接的两个节点可能相同。

输出格式

输出文件 infinite.out 只有一行,包含一个实数,即所有桥的权值之和,四舍五入保留两位小数。

3 1 3
1 2 4
1 2 5
2 3 3
3 3 1
1.00
1 1 1
1 1 100
1 1 1
10.00

提示

【样例说明 1】

这就是问题描述中所举的例子。

【数据规模】

::cute-table{tuack}

数据编号 nn m1m_1 m2m_2
1 ≤10\leq10 ≤50\leq50
2 ≤10000\leq10000 ≤40000\leq40000
3 ≤3×105\leq3 \times 10^5 ≤5×105\leq5 \times 10^5 =1=1
4~7 ^ ≤500\leq500
8~10 ≤500000\leq500000

100% 的数据中,d≤100d\leq 100。