1211 商人的宣傳

2021-06-02 19:15:22 字數 1173 閱讀 6828

鄰接矩陣強大不解釋:

description

bruce是k國的商人,他在a州成立了自己的公司,這次他的公司生產出了一批效能很好的產品,準備宣傳活動開始後的第l天到達b州進行新品拍賣,期間bruce打算將產品拿到各個州去做推銷宣傳,以增加其影響力。

k國有很多個州,每個州都與其他一些州相鄰,但是k國對商人作宣傳卻有一些很奇怪的規定:

1、 商人只能從某些州到達另外一些州,即連通路線是單向的,而且有些州可能是到達不了的。

2、 商人不允許在同乙個州連續宣傳兩天或以上,每天宣傳完必須離開該州。

3、 商人可以多次來到同乙個州進行宣傳。

"我必須找出一條影響力最大的路線才行",bruce想,"但我首先必須知道到底有多少這種符合規定的宣傳路線可供我選擇。"現在bruce把任務交給了你。並且出於考慮以後的需要,你還要幫他算出給出的兩州之間的路線的總數。

input

輸入檔案第一行包含三個整數n,m,l(1≤n,l≤100),分別表示k國的州數、連通路線的數量,以及多少天後必須到達b州。接下來有m行,每行一隊整數x,y(1≤x,y≤n),表示商人能從x州到達y州。

第m+2行為乙個整數q(1≤q≤100),表示bruce有q個詢問。下面q行每行兩個整數a,b(1≤a,b≤n),即a、b州的位置。

output

輸出檔案包含q行,每行乙個整數t,為所求的從a州到b州滿足上述規定的路線總數。

輸入資料中的詢問將保證答案t在長整數範圍內,即t<231。

sample input

4 5 6

1 22 3

3 44 1

2 42

1 44 2

sample output21

problem source

zsuacm team member

#include #include using namespace std;

int main()

; int b[100][100]=;

int c[100][100]=;

cin>>n>>m>>l;

for(int i=0;i>x>>y;

--x;

--y;

++a[x][y];

++b[x][y];

} for(int t=0;t>n;

for(int i=0;i>x>>y;

cout<

1211 商人的宣傳

我記得這是離散數學課上學過的知識,好像是圖的那章,關於連通性問題。而且還有更為快速的演算法。本題實際就是計算路徑長度為l的從起點到末點的路徑的條數。可以有屬性歸納法證明,該解法的正確性。include include using namespace std intconst maxn 500 int...

1211 商人的宣傳

tag 動態規劃 矩陣乘法 題目的意思講得不是很清楚。起點是不算第一天的,路途不算時間,而且要剛好在第l天到達目的地,不能提前到達。如果乙個矩陣m代表鄰接矩陣,m的n次冪 m n 便是經過n步能到達的路徑數。用原始方法時間複雜度為o n o m 3 因為我沒想到log n 次的矩陣演算法,所以用了動...

Sicily 1211 商人的宣傳

題目鏈結在此。受到這位大神的啟示。動態規劃。狀態轉移方程 f l a b f l 1 a t c t b f l a b 表示 l 天之內 從 a 地到達 b 地的路線總數,c a b 表示 從 a 地可以直接到達 b 地,其值等於1 如下 include include include pragm...