最短路(題意繞)

2021-09-28 16:24:08 字數 1497 閱讀 2597

1.0 秒

131,072.0 kb

40 分

4級題有乙隻特別的狼,它在每個夜晚會進行變色,研究發現它可以變成n種顏色之一,將這些顏色標號為0,1,2...n-1。研究發現這只狼的基因中存在乙個變色矩陣,記為colormap,如果colormap[i][j]='y'則這只狼可以在某乙個夜晚從顏色i變成顏色j(一晚不可以變色多次),如果colormap[i][j]=『n』則不能在乙個晚上從i變成j色。進一步研究發現,這只狼每次變色並不是隨機變的,它有一定策略,在每個夜晚,如果它沒法改變它的顏色,那麼它就不變色,如果存在可改變的顏色,那它變為標號盡可能小的顏色(可以變色時它一定變色,哪怕變完後顏色標號比現在的大)。現在這只狼是顏色0,你想讓其變為顏色n-1,你有一項技術可以改變狼的一些基因,具體說你可以花費1的代價,將狼的變色矩陣中的某乙個colormap[i][j]='y'改變成colormap[i][j]='n'。問至少花費多少總代價改變狼的基因,讓狼按它的變色策略可以從顏色0經過若干天的變色變成顏色n-1。如果一定不能變成n-1,則輸出-1.

收起

多組測試資料,第一行乙個整數t,表示測試資料數量,1<=t<=5

每組測試資料有相同的結構構成:

每組資料第一行乙個整數n,2<=n<=50。

之後有n行,每行n個字元,表示狼的變色矩陣,矩陣中只有『y』與『n』兩種字元,第i行第j列的字元就是colormap[i][j]。

每組資料一行輸出,即最小代價,無解時輸出-1。
3

3nyn

ynynnn

8nnnnnnny

nnnnyyyy

ynnnnyyn

nnnnnyyy

yyynnnnn

ynynynyn

nynynyny

yyyyyyyn

6nyyyyn

ynyyyn

yynyyn

yyynyn

yyyynn

yyyyyn

1

0-1

【思路】

讀了好久才明白題意,從i到j的價值等於前面出現的y的個數,知道了這一點就直接上最短路了。。

ac**:

#include using namespace std;

#define inf 0x3f3f3f3f

const int maxn=55;

int a[maxn][maxn],vis[maxn],dist[maxn];

int n,t;

void dijkstra()

}}int main()}}

memset(vis,0,sizeof(vis));

dijkstra();

if(dist[n]==inf)

dist[n]=-1;

printf("%d\n",dist[n]);

}return 0;

}

最短路 最短路徑問題

題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。input 共有n m 3行,其中 第一行為乙個整數n。第2行...

最短路徑演算法 最短路

在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...

最短路(最短路之積)

首先考慮暴力維護,顯然極端資料就會炸裂,那麼用什麼來維護呢?考慮乙個很 nb的公式log n m log n log m ok,這道題到此結束 我們只要把乘積轉化為對數,最後再還原就可以了,也不用考慮精度問題,本蒟蒻試著用pow,然後它死了。includeusing namespace std co...