hdu 2254 奧運(鄰接矩陣應用)

2022-05-03 05:15:09 字數 2293 閱讀 3504

problem description

北京迎來了第乙個奧運會,我們的歡呼聲響徹中國大地,所以今年的奧運金牌 day day up!比爾蓋茲坐上鳥巢裡,手裡搖著小紙扇,看的不亦樂乎,被俺們健兒的頑強拼搏的精神深深的感動了。反正我的錢也多的沒地方放了,他對自己說,我自己也來舉辦乙個奧運會,看誰的更火。不過他的奧運會很特別:

1參加人員必須是中國人;

2至少會加法運算(因為要計算本人獲得的金牌數)

他知道中國有很多的名勝古蹟,他知道自己在t1 到 t2天內不可能把所有的地方都玩遍,所以他決定指定兩個地方v1,v2,如果參賽員能計算出在t1到t2天(包括t1,t2)內從v1到v2共有多少種走法(每條道路走需要花一天的時間,且不能在某個城市停留,且t1=0時的走法數為0),那麼他就會獲得相應數量的金牌,城市的總數<=30

,兩個城市間可以有多條道路

,每條都視為是不同的。

input

本題多個case,每個case:

輸入乙個數字n表示有n條道路

010000

接下來n行每行讀入兩個數字 p1,p2 表示城市p1到p2有道路,並不表示p2到p1有道路 (

0<=p1,p2<2^32

)輸入乙個數字k表示有k個參賽人員

接下來k行,每行讀入四個資料v1,v2,t1,t2 (

0<=t1,t2<10000)

output

對於每組資料中的每個參賽人員輸出乙個整數表示他獲得的金牌數(mod 2008)
sample input

612

1323

3231

2131

2001

21100483

50

sample output

0

1506

0

題意:有向圖中求a點到b點路徑長度為t1~t2的路徑總數

離散數學中,有向圖的鄰接矩陣a表示所有點之間路徑長度為1的路徑數量,a^n則表示路徑長度為n的路徑數量,故需要求某兩點在(a^t1)~(a^t2)的路徑數量之和

注意離散化的方法。用map來離散化。

1

#pragma comment(linker, "/stack:1024000000,1024000000")

2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include

10 #include11 #include12 #include13 #include14 #include 15

using

namespace

std;

16#define pi acos(-1.0)

17#define max(a,b) (a) > (b) ? (a) : (b)

18#define min(a,b) (a) < (b) ? (a) : (b)

19#define ll long long

20#define eps 1e-10

21#define mod 2008

22#define n 36

23#define inf 1e12

24int

n,q,tmp;

25 mapm;

26struct

matrix matrix[10006

];29

matrix mul(matrix a,matrix b)37}

38}39return

res;40}

4142

intmain()

4354

if(m.find(b)==m.end())

57 matrix[0].mp[m[a]][m[b]]++;58}

59for(int i=1;i<10006;i++)

62 scanf("

%d",&q);

63for(int i=0;i)

70int ans=0;71

for(int j=t1-1;j)

75 printf("

%d\n

",ans%mod);76}

77}78return0;

79 }

view code

hdu 2254 奧運(矩陣快速冪)

題目分析 求t1 t2天內,v1 v2一共有多少條的路徑。就是要用到離散數學的可達矩陣的n次冪各元素的值就是經過n條路可以到達該點。所以說這道題說白了就是叫你求 a t1 a t1 1 a t2 輸出 v1v2該元素的值模2008 注意負數的處理 所以就是要用到矩陣降冪 二分求和。注意 1.可達矩陣...

hdu 2254 矩陣的應用

題意 有向圖中求a點到b點路徑長度為t1 t2的路徑總數 離散數學中,有向圖的鄰接矩陣a表示所有點之間路徑長度為1的路徑數量,a n則表示路徑長度為n的路徑數量,故需要求某兩點在 a t1 a t2 的路徑數量之和 1 include2 include3 include4 const int n 3...

快速矩陣冪HDU2254

題意 乙個有向圖,兩個頂點間可能有多條邊,視為不同的路徑,問從v1到v2之間的路徑長度大小在 t1,t2 的方案數mod 2008。輸入n條邊,p1,p2。因為p1,p2 2 32。但是總的頂點數不超過30.所以進行離散化即可。而且有可能t1 t2,所以要判斷一下。輸入的v1,v2可能也不在有向圖內...