QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100

#8947. 白兔迷宮

統計

白兔進入了一個迷宮。迷宮是一個 $n$ 個點 $m$ 條邊的有向圖,圖上可能有重邊和自環。節點從 $1$ 到 $n$ 編號,起點為 $S$,終點為 $T$。保證從任意一個點出發都存在一條路徑到達 $T$。

迷宮的每條邊上有一個怪物,怪物有 $01$ 兩類。白兔有一個積分,初始為 $0$。每當白兔經過一條邊,

  • 若這條邊上是一個 $1$ 類怪物,白兔會將它擊殺獲得 1 的積分,並走到這條邊的終點;
  • 若這條邊上是一個 $0$ 類怪物,白兔會被其打暈。怪物不會把白兔打死,但是會清空白兔之前獲得的所有積分,然後把白兔放在這條邊的終點。

經過一條邊後這條邊上的怪物會刷新,所以白兔多次經過一條邊會多次觸發怪物的效果。

由於白兔不知道迷宮的結構,所以白兔決定隨機游走,即從 $S$ 出發,每次從當前點獨立等機率隨機一條出邊移動,觸發對應邊上怪物的效果並到達這條邊的終點。當白兔第一次走到 $T$ 時,游走就結束了。

給出這張圖的結構以及每條邊上怪物的類型,定義 $X$ 表示游走完成時的積分對應的隨機變數,白兔想讓你幫他回答兩個問題:

  1. $X$ 的期望是多少;
  2. $X$ 的變異數是多少。

由於白兔不喜歡實數,你只需要輸出其對 $998244353$ 取模的結果。在題設條件下,容易發現答案一定是有理數,且將答案化為既約分數形式後分母不為 $998244353$ 的倍數。

輸入格式

從標準輸入讀入資料。

輸入的第一行包含四個整數 $n, m, S, T$,表示迷宮的點數、邊數、起點、終點。

接下來 $m$ 行,每行三個整數 $x, y, o$,表示一條 $x$ 到 $y$ 的有向邊以及這條邊上的怪物類型。

輸出格式

輸出到標準輸出。

輸出一行兩個整數,第一個整數表示積分的期望,第二個整數表示積分的變異數。

範例

輸入 1

2 2 1 2
1 1 1
1 2 1

輸出 1

2 2

說明 1

從 $1$ 號點出發有一個自環和一條通往 $2$ 號點的邊。每條邊都有 $o = 1$,因此積分就等於隨機游走的步數。

對於 $x > 0$,最終積分為 $x$ 當且僅當白兔先在 $1$ 號點走 $x-1$ 次自環,第 $x$ 次走到 $2$ 號點,因此積分為 $x$ 的機率為 $2^{-x}$。故期望為 $$\sum_{x=1}^\infty x2^{-x} = 2,$$ 變異數為 $$\sum_{x=1}^{+\infty} (x-2)^2 2^{-x} = 2.$$

資料範圍

對於所有測試資料,

  • $2 \le n \le 100$,$1 \le m \le n^2$;
  • $1 \le S, T \le n$,$S \neq T$;
  • $1 \le x, y \le n$,$0 \le o \le 1$。
  • 從任意一個點出發都存在一條路徑到達 $T$。

Subtask 1(4pts):$o = 0$

Subtask 2(24pts):$o = 1$

Subtask 3(8pts):$m = n-1$,圖上僅有 $S$ 入度為 $0$,僅有 $T$ 出度為 $0$

Subtask 4(20pts):給出的圖沒有環

Subtask 5(44pts):沒有特殊限制

評分方式

對於每個測試點,你每正確回答一個問題,可以獲得該測試點 $50\%$ 的分數。每個子任務的得分為其中所有測試點得分的最小值。

說明

對一個值域為自然數集的隨機變數 $X$,若 $X = x$ 的機率為 $P_x$,那麼 $X$ 的期望定義為 $$\mathbb{E}[X] = \sum_{x = 0}^{+\infty} x P_x,$$ $X$ 的變異數定義為 $$\text{Var}[X] = \mathbb{E}[(X - \mathbb{E}[X])^2] = \sum_{x=0}^{+\infty} (x-\mathbb{E}[X])^2 P_x.$$

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.