B1297 SCOI2009 迷路 矩陣

2022-03-13 05:22:23 字數 1372 閱讀 2382

這個題我覺得很有必要寫一篇部落格。首先,我們需要知道,假如乙個鄰接矩陣只有0/1構成,那麼它自己的n次方就是走n步之後的方案數。但這個題還有2~9咋辦呢。我們觀察發現,這個題只有10個點,而且邊權<=9我們可以想到拆點這個小操作。把每個點拆成9個點,點內連1的邊,點外分別連到相應的權值就行了。

題幹:

windy在有向圖中迷路了。 該有向圖有 n 個節點,windy從節點 0 出發,他必須恰好在 t 時刻到達節點 n-1。 現在給出該有向圖,你能告訴windy總共有多少種不同的路徑嗎? 注意:windy不能在某個節點逗留,且通過某有向邊的時間嚴格為給定的時間。

**:

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

#define duke(i,a,n) for(register int i = a;i <= n;i++)

#define lv(i,a,n) for(register int i = a;i >= n;i--)

#define clean(a) memset(a,0,sizeof(a))

const

int inf = 1

<< 30

;const

int mod = 2009

;typedef

long

long

ll;typedef

double

db;template

void read(t &x)

template

void

write(t x)

intm,t;

struct

mat

void

i()

}inline mat

operator * (const mat &oth)

res.a[i][j] =sum;}}

return

res;

}}a,b;

mat qpow(mat a,

intk)

a = a *a;

k >>= 1;//

cout<}

returnc;}

char s[105

];int

main()

duke(i,

1,m)

}//cout<<"??"printf(

"%d\n

",b.a[1][m * 9 - 8

]);

return0;

}/*2 211

00*/

題解 bzoj1297 SCOI2009 迷路

windy在有向圖中迷路了。該有向圖有 n 個節點,windy從節點 0 出發,他必須恰好在 t 時刻到達節點 n 1。現在給出該有向圖,你能告訴windy總共有多少種不同的路徑嗎?注意 windy不能在某個節點逗留,且通過某有向邊的時間嚴格為給定的時間。第一行包含兩個整數,n t。接下來有 n 行...

BZOJ1297 SCOI2009 迷路 題解

windy在有向圖中迷路了。該有向圖有 n 個節點,windy從節點 0 出發,他必須恰好在t 時刻到達節點 n 1。現在給出該有向圖,你能告訴windy總共有多少種不同的路徑嗎?注意 windy不能在某個節點逗留,且通過某有向邊的時間嚴格為給定的時間。思考當邊權為1時,a i j 1可以表示為i到...

1297 SCOI2009 迷路 矩陣乘法

windy在有向圖中迷路了。該有向圖有 n 個節點,windy從節點 0 出發,他必須恰好在 t 時刻到達節點 n 1。現在給出該有向圖,你能告訴windy總共有多少種不同的路徑嗎?注意 windy不能在某個節點逗留,且通過某有向邊的時間嚴格為給定的時間。第一行包含兩個整數,n t。接下來有 n 行...