trang chủ / bài tập / famroads

Famil Door và những con đường

Đề bài

Mô tả

Một thành phố có n giao lộ được nối với nhau bởi n1 con đường hai chiều, tạo thành một cây (đồ thị liên thông không có chu trình). Như vậy giữa hai giao lộ bất kỳ luôn có đúng một đường đi đơn.

Thành phố có m cư dân. Cư dân thứ i sống ở giao lộ ui và làm việc ở giao lộ vi.

Thị trưởng sẽ xây thêm đúng một con đường hai chiều mới, bằng cách chọn ngẫu nhiên đều một trong n·(n1)2 cặp giao lộ (a,b) với ab (cặp được chọn có thể đã có đường nối sẵn).

Một cư dân trở nên hạnh phúc nếu sau khi xây con đường mới, tồn tại một chu trình đơn chứa cả nhà (ui) lẫn nơi làm việc (vi) của người đó. Khi đó niềm vui của người đó bằng độ dài của chu trình đơn ấy (số cạnh trên chu trình); có thể chứng minh rằng chu trình này là duy nhất.

Với mỗi cư dân, hãy tính kỳ vọng niềm vui của người đó, tức là kỳ vọng độ dài chu trình chứa cả uivi, với điều kiện một chu trình như vậy tồn tại (chỉ xét những trường hợp con đường mới khiến người đó hạnh phúc).

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm — số giao lộ và số cư dân.
  • n1 dòng tiếp theo, mỗi dòng chứa hai số nguyên aibi — một con đường nối giao lộ aibi.
  • m dòng cuối, mỗi dòng chứa hai số nguyên uivi — nhà và nơi làm việc của cư dân thứ i.

Dữ liệu ra

In ra m dòng, dòng thứ i là kỳ vọng niềm vui của cư dân thứ i. Đáp án được coi là đúng nếu sai số tuyệt đối hoặc tương đối không vượt quá 106.

Ràng buộc

  • 2n,m105
  • 1ai,bin
  • 1ui,vin, uivi

Ví dụ

Input Output Giải thích
3 3
1 2
1 3
1 2
1 3
2 3
2.50000000
2.50000000
3.00000000
Cây hình sao tâm 1. Với cư dân 1 (u=1,v=2): hai con đường mới (1,2)(2,3) đều tạo chu trình chứa cả 12, độ dài lần lượt 23, kỳ vọng =2.5. Cư dân 3 (u=2,v=3): chỉ con đường (2,3) phù hợp, chu trình dài 3.
4 3
2 4
4 1
3 2
3 1
2 3
4 1
4.00000000
3.00000000
3.00000000
Cây là một đường thẳng 1423.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0