題意/description
:為增強體質,約翰決定舉辦一場奶牛接力跑比賽。比賽現場有一些接力位置,這些位置間有t條路連線,第i條路的長度為li。 有n頭奶牛需要參加比賽,領頭的奶牛從位置s出發,她會按照你的指示沿著一條路跑到下個位置,把接力棒交給等在那裡的下一頭奶牛,就休息去了。每頭奶牛重複這個過程這條接力路線的終點必須在位置e上。
奶牛數量較多,允許一些奶牛等候在同一位置,一條路也可以供多頭奶牛奔跑。 奶牛們對接力跑興趣不大,拜託你敷衍地設計一條總長度最短的路線。所以請設計一條由n段路組成的,起點在s,終點在e上的最短路線吧。
讀入/input
:第一行:四個用空格分開的整數:表示n,t,s和e,2 ≤ n ≤ 106,2 ≤ t ≤ 100,1 ≤ s, e ≤ 1
第二行到t + 1行: 第i + 1行首先有乙個正整數li,表示第i條路的長度, 1 ≤ li ≤ 1,其次是ui和vi,表示第i條路連線的兩個位置,1 ≤ ui, vi ≤ 1
輸出/output:
第一行:單個整數,表示起點為s,終點為e,且恰好經過n段路的最短路線長度
題解
/solution
:
題目似乎十分簡單,用乙個鄰接矩陣a就ok,t也不大,但n卻十分嚇人
這題求的是恰好經過n段路的最短路線長度,即矩陣a[i,j]表示從點i到點j的最小值,顯然不能和往常那樣寫c[i,j]=c[i,j]+a[i,k]*b[k,j]了。所以在矩陣乘法那改一下,c[i,j]:=min(c[i,j],a[i,k]+b[k,j])且(0
最後在程式中注意一下矩陣的值的大小,否則很容易出錯。
**/code:
type
arr=array [0..101,0..101] of longint;
var n,t,q,z,m:longint;
d,c:arr;
o:array [0..1001] of longint;
procedure mi(a,b:arr);
var i,j,k:longint;
begin
for i:=1 to m do
for j:=1 to m do
c[i,j]:=maxlongint div 3;
for i:=1 to m do
for j:=1 to m do
for k:=1 to m do
if (a[i,k]
relays 奶牛接力跑(矩陣快速冪求最短路徑)
題幹 fj的n 2 n 1,000,000 頭奶牛選擇了接力跑作為她們的日常鍛鍊專案。至於進行接力跑的地點 自然是在牧場中現有的t 2 t 100 條跑道上。農場上的跑道有一些交匯點,每條跑道都鏈結了兩個不同的交匯點 i1 i和i2 i 1 i1 i 1,000 1 i2 i 1,000 每個交匯點...
程式設計師能力矩陣
注意 每個層次的知識都是漸增的,位於層次n,也蘊涵了你需了解所有低於層次n的知識。電腦科學 computer science 軟體工程 software engineering 程式設計 programming 經驗 experience 學識 knowledge csdn編者按 上述圖書中,第一級...
程式設計師能力矩陣
注意 每個層次的知識都是漸增的,位於層次n,也蘊涵了你需了解所有低於層次n的知識。電腦科學 computer science 軟體工程 software engineering 程式設計 programming 經驗 experience 學識 knowledge 軟體界乙個無可爭議的事實是,不同程...