canuc80k6318·19/32

Điểm Dừng Của Hành Trình

Nộp bài trên LQDOJ

Bài 63 · Gaussian Elimination

Cho một đồ thị đơn vô hướng có đỉnh, đánh số từ đến . Một quá trình bắt đầu tại đỉnh .

Mỗi khi quá trình đang ở một đỉnh , các việc sau xảy ra theo đúng thứ tự:

  1. Với xác suất , quá trình dừng vĩnh viễn tại .
  2. Với xác suất , quá trình chọn đều ngẫu nhiên một cạnh kề với rồi đi sang đầu kia của cạnh.

Đỉnh có ít nhất một cạnh kề. Vì xác suất dừng dương ở mỗi lần thăm, quá trình kết thúc với xác suất .

Với từng đỉnh, hãy tính xác suất quá trình cuối cùng dừng tại đỉnh đó.

Input

  • Dòng đầu chứa bốn số nguyên .
  • dòng tiếp theo, mỗi dòng chứa hai số nguyên , mô tả một cạnh vô hướng giữa hai đỉnh khác nhau. Không có hai cạnh trùng nhau.

Output

  • In dòng. Dòng thứ chứa xác suất quá trình dừng tại đỉnh .
  • Kết quả được chấp nhận nếu sai số tuyệt đối hoặc tương đối của mỗi số không vượt quá .

Constraints

  • .
  • .
  • .
  • Đồ thị không có khuyên và không có cạnh lặp.
  • Đỉnh có bậc dương; các đỉnh khác có thể không đi tới được từ đỉnh .

Scoring

  • Subtask ( số điểm): và .
  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

2 1 1 1
1 2

Output

1.000000000
0.000000000

Giải thích: Xác suất dừng bằng , nên quá trình dừng tại đỉnh ngay lần xét đầu tiên và không bao giờ tới đỉnh .

Lời giải tóm tắt
  • Ý tưởng: Đặt s=P/Q, g=1-s. Gọi x[i] là kỳ vọng số lần quá trình có mặt tại đỉnh i để thực hiện phép thử dừng.
  • Ý tưởng: Một lần có mặt tại i đến từ lần xuất phát nếu i=1, hoặc từ một láng giềng j: quá trình không dừng ở j với xác suất g, rồi chọn đúng cạnh j-i với xác suất 1/deg(j). Bởi tính tuyến tính của kỳ vọng:
  • Ý tưởng: x[i] - Σ(j kề i) g/deg(j) · x[j] = [i=1].
  • Ý tưởng: Đây là hệ tuyến tính N ẩn. Sau khi giải bằng khử Gauss có chọn pivot, mỗi lần thăm i kết thúc tại đó với xác suất s, nên đáp án là s*x[i].
  • Ý tưởng: Độ phức tạp O(N^3+M), bộ nhớ O(N^2+M).