有乙個n*n的矩陣,要求從(1,1)到(n,n)的最短路數量,路徑的權值是所經過元素的和,且路徑與對角線對稱。
由於路徑是對稱的,可以先預處理將右下角的元素加到左上角,那麼就只用計算(1,1)到對角線的最短路數量了,計算最短路可以用dijkstra,要計算數量只需要在dijkstra的過程中遞推一下就好了。
#include#include#include#includeusing namespace std;
const int maxn=1e2+5;
const int mod=1e9+9;
const int inf=0x3f3f3f3f;
int zu[maxn][maxn],n;
int dis[maxn][maxn],num[maxn][maxn];
bool mark[maxn][maxn];
int dir[4][2]=;
void dijkstra()
else if(dis[rr][cc]==dis[r][c]+zu[rr][cc])
num[rr][cc]=(num[rr][cc]+num[r][c])%mod;}}
}int main()
printf("%d\n",ans);
}return 0;
}
uva10986 最短路徑
題目的意思就是 首先給出有幾組測試樣例 每組樣例先是 給 n 點的個數 m 邊的個數 s 起點 t 終點 然後是每條邊 以及權值.求最短路.但是因為點的數量很多,要用優化的dijkstra 優先佇列.劉汝佳書裡的模板差別只有這題是無向圖.include include include include...
uva10801 最短路問題
題目大意 有一層不超過100層的大樓,有n個電梯,它們的速度都不同。而且每個電梯只能到達指定的那些樓層,而且它們都有各自的速度 即上公升一層或下降一層所用的時間 如果乙個人在某層走出電梯,要換乙個電梯乘,那麼他要等60秒 不管要等的是那個電梯,即使是剛剛出來的那個電梯也要等60秒 在0層搭電梯出發時...
uva 10246(最短路變形)
思路 spfa求出每個點到其餘頂點的最短路 最短路上的每個點的val都小於等於起點的val 然後又二維陣列dp來儲存,最後詢問的時候就是列舉中間點i了,min 1 include2 include3 include4 include5 include6 include7 using namespac...