题目描述
放假了,小 Z 觉得呆在家里特别无聊,于是决定一个人去游乐园玩。
进入游乐园后,小 Z 看了看游乐园的地图,发现可以将游乐园抽象成有 n 个景点、m 条道路的无向连通图,且该图中至多有一个环(即 m 只可能等于 n 或者 n−1)。
小 Z 现在所在的大门也正好是一个景点。小 Z 不知道什么好玩,于是他决定,从当前位置出发,每次随机去一个和当前景点有道路相连的景点,并且同一个景点不去两次(包括起始景点)。贪玩的小 Z 会一直游玩,直到当前景点的相邻景点都已经访问过为止。
小 Z 所有经过的景点按顺序构成一条非重复路径,他想知道这条路径的期望长度是多少?
小 Z 把游乐园的抽象地图画下来带回了家,可是忘了标哪个点是大门,他只好假设每个景点都可能是大门(即每个景点作为起始点的概率是一样的)。同时,他每次在选择下一个景点时会等概率地随机选择一个还没去过的相邻景点。
输入格式
第一行是两个整数 n 和 m ,分别表示景点数和道路数。
接下来 m 行,每行三个整数 Xi,Yi,Wi,分别表示第 i 条路径的两个景点为 Xi,Yi,路径长 Wi。所有景点的编号从 1 至 n,两个景点之间至多只有一条道路。
输出格式
共一行,包含一个实数,即路径的期望长度,保留五位小数。
样例输入输出
4 3
1 2 3
2 3 1
3 4 4
6.00000
样例解释 1
样例数据中共有 6 条不同的路径:
路径 |
长度 |
概率 |
1→4 |
8 |
41 |
2→1 |
3 |
81 |
2→4 |
5 |
81 |
3→1 |
4 |
81 |
3→4 |
4 |
81 |
4→1 |
8 |
41 |
因此期望长度 =48+83+85+84+84+48=6.00。
数据规模
对于 100% 的数据,1≤Wi≤100。
测试点 1 满足 n=10,m=n−1,保证图是链状;
测试点 2 满足 n=100,m=n−1,只有节点 1 的度数大于 2;
测试点 3 满足 n=1000,m=n−1;
测试点 4 满足 n=105,m=n−1;
测试点 5 满足 n=105,m=n−1;
测试点 6 满足 n=10,m=n;
测试点 7 满足 n=100,m=n,环中节点个数 ≤5;
测试点 8 满足 n=1000,m=n,环中节点个数 ≤10;
测试点 9 满足 n=105,m=n,环中节点个数 ≤15;
测试点 10 满足 n=105,m=n,环中节点个数 ≤20。