# 面倒だから 点32 を 点0 に変更
require 'matrix'
require 'mathn'
N = 32 # 点の数
A, B = 5, 0 # 電位が与えられた点
VA, VB = 5, 0 # 電位
reg = DATA.map {|s| s.split(' ').map(&:to_i)}
mat = (1..N).map {[0] * N}
reg.each do |i, j|
mat[i][i] += 1
mat[i][j] -= 1
mat[j][j] += 1
mat[j][i] -= 1
end
mat[A], mat[B] = [0] * N, [0] * N
mat[A][A] = mat[B][B] = 1
v = [0] * N
v[A], v[B] = VA, VB
sol = Matrix.rows(mat).inv * Vector.elements(v)
N.times {|i| puts "#{i} #{sol[i].to_f}"}
__END__
1 2
1 6
2 3
2 7
3 4
3 8
4 5
4 9
5 10
6 7
6 11
7 8
7 12
8 9
8 13
9 10
9 14
10 15
11 12
11 16
12 13
12 17
13 14
13 22
14 15
16 17
16 18
17 19
18 19
18 23
19 20
19 24
20 21
20 25
21 22
21 26
22 27
23 24
23 28
24 25
24 29
25 26
25 30
26 27
26 31
27 0
28 29
29 30
30 31
31 0
IyDpnaLlgJLjgaDjgYvjgokg54K5MzIg44KSIOeCuTAg44Gr5aSJ5pu0CgpyZXF1aXJlICdtYXRyaXgnCnJlcXVpcmUgJ21hdGhuJwoKTiA9IDMyICMg54K544Gu5pWwCkEsIEIgPSA1LCAwICMg6Zu75L2N44GM5LiO44GI44KJ44KM44Gf54K5ClZBLCBWQiA9IDUsIDAgIyDpm7vkvY0KCnJlZyA9IERBVEEubWFwIHt8c3wgcy5zcGxpdCgnICcpLm1hcCgmOnRvX2kpfQoKbWF0ID0gKDEuLk4pLm1hcCB7WzBdICogTn0KcmVnLmVhY2ggZG8gfGksIGp8CgltYXRbaV1baV0gKz0gMQoJbWF0W2ldW2pdIC09IDEKCW1hdFtqXVtqXSArPSAxCgltYXRbal1baV0gLT0gMQplbmQKbWF0W0FdLCBtYXRbQl0gPSBbMF0gKiBOLCBbMF0gKiBOCm1hdFtBXVtBXSA9IG1hdFtCXVtCXSA9IDEKCnYgPSBbMF0gKiBOCnZbQV0sIHZbQl0gPSBWQSwgVkIKCnNvbCA9IE1hdHJpeC5yb3dzKG1hdCkuaW52ICogVmVjdG9yLmVsZW1lbnRzKHYpCk4udGltZXMge3xpfCBwdXRzICIje2l9ICN7c29sW2ldLnRvX2Z9In0KCl9fRU5EX18KMSAyCjEgNgoyIDMKMiA3CjMgNAozIDgKNCA1CjQgOQo1IDEwCjYgNwo2IDExCjcgOAo3IDEyCjggOQo4IDEzCjkgMTAKOSAxNAoxMCAxNQoxMSAxMgoxMSAxNgoxMiAxMwoxMiAxNwoxMyAxNAoxMyAyMgoxNCAxNQoxNiAxNwoxNiAxOAoxNyAxOQoxOCAxOQoxOCAyMwoxOSAyMAoxOSAyNAoyMCAyMQoyMCAyNQoyMSAyMgoyMSAyNgoyMiAyNwoyMyAyNAoyMyAyOAoyNCAyNQoyNCAyOQoyNSAyNgoyNSAzMAoyNiAyNwoyNiAzMQoyNyAwCjI4IDI5CjI5IDMwCjMwIDMxCjMxIDA=