XJOJ 路徑數 最短路 最短路路徑數量

2021-10-03 03:49:35 字數 1311 閱讀 7240

題目大意:euphemia到乙個n*n的藥草田裡採藥,她從左上角的格仔田(第一行,第一列)出發,要到達右下角(第n行,第n列)的格仔田,每次她可以走到與當前格仔有邊相鄰的格仔去,但她不會走已經走過的格仔,而且出於對美的要求,她走過的路徑是關於 左下-右上 對角線對稱的。由於地勢不同,在每個格仔田採藥都會有乙個疲勞度tij,euphemia想知道:有多少條合法路徑,可以使得她採藥的疲勞度最小。

多組資料。

每組資料第一行乙個整數n,接下來n行,每行n個非零數字(1,2,3...9中乙個),表示格仔田的疲勞度。

當n=0,輸入結束。

對於每組資料,輸出乙個整數表示答案,答案%1000000009。

2

1 11 1

31 1 1

1 1 1

2 1 1

0

2

3

對於20%的資料滿足n<=5。

對於另外20%的資料滿足n<=40。

對於100%的資料滿足n<=100,不超過50組資料。

1s256m

題目分析:因為要關於副對角線對稱,所以不妨直接將矩陣沿著副對角線對折,因為要求最短路,所以不妨直接求出以點(1,1)為起點的單源最短路,期間用dp維護一下最短路路徑的數量,最後累加一下就好了,這個dp我是直接從網上拿的模板,迪傑斯特拉+dp

**:

#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int inf=0x3f3f3f3f;

const int n=110;

const int mod=1e9+9;

const int b[4][2]=;

int maze[n][n],n;

bool vis[n][n];

int d[n][n];

ll dp[n][n];

struct node

bool operator<(const node& a)const

}; void dijkstra()

else if(d[xx][yy]==d[x][y]+w)

dp[xx][yy]=(dp[xx][yy]+dp[x][y])%mod;

}}}

int main()

return 0;

}

Codeup最短路徑 最短路徑

n個城市,標號從0到n 1,m條道路,第k條道路 k從0開始 的長度為2 k,求編號為0的城市到其他城市的最短距離。第一行兩個正整數n 2 n 100 m m 500 表示有n個城市,m條道路,接下來m行兩個整數,表示相連的兩個城市的編號。n 1行,表示0號城市到其他城市的最短路,如果無法到達,輸出...

Codeup最短路徑 最短路徑問題

給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。輸入n,m,點的編號是1 n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一行是兩個數 s,t 起點s,...

最短路徑之最短路徑問題

提交 狀態 討論版 命題人 外部匯入 題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點間的直線距離。現在的 任務是找出從一點到另一點之間的最短路徑。輸入共n m 3行,...