白兔進入了一個迷宮。迷宮是一個 $n$ 個點 $m$ 條邊的有向圖,圖上可能有重邊和自環。節點從 $1$ 到 $n$ 編號,起點為 $S$,終點為 $T$。保證從任意一個點出發都存在一條路徑到達 $T$。
迷宮的每條邊上有一個怪物,怪物有 $01$ 兩類。白兔有一個積分,初始為 $0$。每當白兔經過一條邊,
- 若這條邊上是一個 $1$ 類怪物,白兔會將它擊殺獲得 1 的積分,並走到這條邊的終點;
- 若這條邊上是一個 $0$ 類怪物,白兔會被其打暈。怪物不會把白兔打死,但是會清空白兔之前獲得的所有積分,然後把白兔放在這條邊的終點。
經過一條邊後這條邊上的怪物會刷新,所以白兔多次經過一條邊會多次觸發怪物的效果。
由於白兔不知道迷宮的結構,所以白兔決定隨機游走,即從 $S$ 出發,每次從當前點獨立等機率隨機一條出邊移動,觸發對應邊上怪物的效果並到達這條邊的終點。當白兔第一次走到 $T$ 時,游走就結束了。
給出這張圖的結構以及每條邊上怪物的類型,定義 $X$ 表示游走完成時的積分對應的隨機變數,白兔想讓你幫他回答兩個問題:
- $X$ 的期望是多少;
- $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.$$