图图
题号:NC15138
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
Special Judge, 64bit IO Format: %lld

题目描述

先考虑下面这个原始问题:

 给定一个由 N 个点及 M 条有正整数权重的有向边组成的图。点的编号由 0 至 N-1。

 此图中可以有自环 (自己指向自己的边),但是对于任何的有序点对 (a, b),由 a 至 b 的边最多只会有一条。

 在这张图中,有一个旅人,他会按照下列的规则进行移动:如果他所在的点没有任何向外的边,那他就不会移动。如果有恰好一条的对外边,那他就会走到那条对外边所指向的点。如果有超过一条的对外边,那他将会随机选择一条进行移动,每条对外边被选中的概率正比于它的权重。

我们不知道这个旅人现在在哪里,但是我们知道这个旅人现在在这张图中每个点的概率,请问,这个旅人走一步之后,他在这张图中每个点的概率各是多少呢?

蜥蜴觉得这题超级简单,于是很快地写完了一个正确的解答,并且输入原题的样例测试,但是没想到,蜥蜴的程式的输出竟然跟输入一样!也就是说,这个旅人给定的概率分布,跟他走一步之后的概率分布竟然完全一致!蜥蜴觉得这样的测试数据真的太酷了,他也想要产生这样的测试数据,于是,他决定把这个问题交给各位参赛者:对于给定的一张图,请找出一组原题的测试数据,使得原题的答案跟测试数据一致!

输入描述:

输入的第一行有两个正整数N, M,分别代表原题中的图的点数及边数。
接下来的M行每行有三个整数a, b, w,分别代表一条a至b的有向边,其权重为w。

输出描述:

如果没有这种测试数据存在,请在一行中输出`Impossible`。否则,请输出N行,第i行中有一个浮点数,代表旅人一开始在点i - 1的概率。如果有超过一种可能的答案,输出任意一种皆可。

此题的评审方式如下:

如果答案为`Impossible`,则必须输出`Impossible`才正确。而在有可能答案的测试数据,则不能输出`Impossible`。

浮点数输出的部分,读入后的总和必须和1之间的误差(相对或绝对)不超过10-9,否则评判为错误。

按照蜥蜴原题的代码执行,求得旅人下一步的概率分布,如果对于每个点,下一步的概率跟读入的概率误差(相对或绝对)不超过10-9,则评判为正确,否则为错误。

示例1

输入

复制
3 3
0 1 1
1 2 1
2 0 1

输出

复制
0.33333333333333331483
0.33333333333333337034
0.33333333333333331483
示例2

输入

复制
2 4
0 1 4
0 0 6
1 0 7
1 1 3

输出

复制
0.63636363636363635354
0.36363636363636364646

备注:

1≤N≤100
0≤M≤10000
0≤a,b<N
1≤w≤10
任何的有序点对 (a, b),由 a 至 b 的边最多只会有一条