如果邊權為 1
11,則是簡單的矩陣快速冪加速dp遞推方程,又因為邊權並不大,所以考慮拆點,新圖中邊權均為 1
11,將每個點暴力拆成相連的 9
99 個點,對於原先某條邊 (u,
v,w)
(u, v, w)
(u,v,w
),可以轉化為 u
uu 拆成的點中第 w
ww 個連向 v
vv 拆成的點中第 1
11 個,其間恰好 w
ww 條邊。
#include
#include
const
int maxn =
95, mod =
2009
;struct matrix
matrix operator*(
const matrix& rhs)
const};
inline matrix qpow
(matrix a,
int b)
return ans;
}int
main()
a =qpow
(a, t)
;printf
("%d"
, a.x[1]
[(n -1)
*9+1
]);return0;
}
洛谷 P4159 SCOI2009 迷路
windy在有向圖中迷路了。該有向圖有 n 個節點,windy從節點 0 出發,他必須恰好在 t 時刻到達節點 n 1。現在給出該有向圖,你能告訴windy總共有多少種不同的路徑嗎?注意 windy不能在某個節點逗留,且通過某有向邊的時間嚴格為給定的時間。根據題意,可以寫出轉移方程 f sum f ...
題解 P4159 SCOI2009 迷路
large 題目和普通的 01 路徑矩陣加速有一點區別,做法很巧。large 給定乙個鄰接矩陣,即每個點之間的邊權,若為 0 則無邊,因為是 a a 的矩陣,所以隱藏含義是每條邊權 1 9 large 因為邊權不只是 1 了,所以不能直接就將每個點連線邊做矩乘,但是資料範圍太大又不能不用矩乘。注意到...
洛谷 4159 SCOI2009 迷路
題目描述 windy在有向圖中迷路了。該有向圖有 n 個節點,windy從節點 0 出發,他必須恰好在 t 時刻到達節點 n 1。現在給出該有向圖,你能告訴windy總共有多少種不同的路徑嗎?注意 windy不能在某個節點逗留,且通過某有向邊的時間嚴格為給定的時間。輸入格式 第一行包含兩個整數,n ...