最短路 (Floyd 最短路)
在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t-shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?
Input
輸入包括多組資料。每組資料第一行是兩個整數N、M(N<=100,M<=10000),N表示成都的大街上有幾個路口,標號為1的路口是商店所在地,標號為N的路口是賽場所在地,M則表示在成都有幾條路。N=M=0表示輸入結束。接下來M行,每行包括3個整數A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A與路口B之間有一條路,我們的工作人員需要C分鐘的時間走過這條路。
輸入保證至少存在1條商店到賽場的路線。
Output
對於每組輸入,輸出一行,表示工作人員從商店走到賽場的最短時間
Sample Input
2 1
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0
Sample Output
3
2
思路:
求最短路,Floyd,Dijkstra都行。看樣例是雙向的。
程式碼:
#include<stdio.h> int inf=99999999; int main() { int e[110][110],n,m,a,b,c,i,j,k; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i==j) e[i][j]=0; else e[i][j]=inf; } while(m--) { scanf("%d%d%d",&a,&b,&c); e[a][b]=c; e[b][a]=c; } for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(e[i][j]>e[i][k]+e[k][j]) { e[i][j]=e[i][k]+e[k][j]; } } printf("%d\n",e[1][n]); } return 0; }
相關推薦
最短路 (Floyd 最短路)
在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t-shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎? Input 輸入包括多組資料。每組資料第一行是兩個整數N、
POJ - 2253 Frogger(Floyd最短路+預處理)
最短路 pri str 之間 col ace blank scanf oid 題目鏈接:http://poj.org/problem?id=2253 題意:青蛙要從點1到點2,給出各點的坐標,如果點A到點B可以通過A->C,C->B,A到B的距離可以用A-&g
Audiophobia UVA - 10048 (Floyd最短路)
題目大意: 給出一張圖,求任意兩點之間最短路的最長邊。 思路: 裸弗洛伊德使用遞推關係dis[i][j]=min(dis[i][j],max(dis[i][k],dis[k][j]));完事了 AC程式碼: #include<cstdio> #include&l
多源最短路(floyd演算法)
Floyd適用無向圖和有向圖,不適用於帶負權的圖 #include<stdio.h> #include<algorithm> #include<iostream> using namespace std; int n , m; int
最短路(Floyd)-hdu1317
題目連結:https://vjudge.net/problem/HDU-1317 題目描述: 題意:玩家起始有100個能量點,剛開始在起始房間中,每個房間外有一條單向的路徑通往其他房間(一個房間可能通往多個房間),具體通往哪些房間可以檢視房間門口的房間列表。每次玩家進入一個房間,他的能量值會更新成
HDU2544最短路(Floyd演算法)
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 86733 Accepted Submission
最短路(Floyd演算法)
最短路徑問題使用Floyd演算法:(結點編號從1-n) 使用鄰接矩陣來儲存原圖,那麼此時鄰接矩陣中edge[i][j]的值即表示從結點i和結點j,中間不經過任何結點時距離的最小值(若他們之間有多條邊,取最小權值儲存在鄰接矩陣,也可能是去無窮或者-1,這樣來表示不可達);在
hdu2544 最短路(floyd) 解題報告
Problem Description 在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t-shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎? Input
hdu2544 最短路 (floyd)
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 47151 Accepted Submis
poj2240(Floyd最短路的變種---最長路 )Arbitrage
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12761 Accepted: 5392 Description Arbitrage is the use of discrep
最短路演算法(Floyd、Dijkstra)
本節學習指定一個點(源點)到其餘各個頂點的最短路徑,也叫做“單源最短路徑”。例如下圖中的1號頂點到2、3、4、5、6號頂點的最短路徑。 與Floyd演算法一樣,這裡仍然使用二維陣列g來儲存頂點之間邊的關係,初始值如下: 我們還需要用一個一維陣列dis來儲存1號頂點
hdu 2544 最短路(SPFA算法)
oid rom 表示 max 兩個 amp 取消 get pid 本題鏈接:點擊打開鏈接 本題大意: 首先輸入一個n,m。代表有n個點。m條邊。然後輸入m條邊,每條邊輸入兩個點及邊權。1為起點,n為終點。輸入兩個零表示結束。 解題思路:
#41 最短路(分治+線性基)
n) include getchar() 後綴 比較 getc line 把他 out 考慮異或最短路應該怎麽求。那麽這是個WC原題,dfs一遍找到所有有用的環丟進線性基即可,因為每一個環的權值都是可以取到且不對其他部分產生影響的。 現在給了一棵樹,不妨就把他看做原
單源最短路——(Bellman-Ford演算法)超詳細
今天看了一下午的白書的Bellman-Ford演算法,由於能力有限,可能理解不到位。。。。 感覺就是遍歷所有邊更新點,如果有更新的點,繼續遍歷所有邊,直到沒有點更新就退出. #include <iostream> #include <stdio.h> #inc
Dijkstra演算法,求最短路(dp 動態規劃)
•迪傑斯特拉(Dijkstra)演算法思想 按路徑長度遞增次序產生最短路徑演算法: 把V分成兩組: (1)S:已求出最短路徑的頂點的集合 (2)V-S=T:尚未確定最短路徑的頂點集合 將T中頂點按最短路徑遞增的次序加入到S中, 保證:(1)從源點V0到S中各
次短路(第二最短路徑)
第二最短路徑 有句古話叫“不破不立”,這個思想跟次短路也就是第二最短路的思想一樣。 演算法思想:計算原圖的最短路,並儲存路徑。一一破壞最短路中的每一條邊,重新計算最短路,並排序。最小的那個就是第二最短路。 1.用dijkstra計算u->v的最短路徑,儲存路徑上的每條
平面圖的最小割轉最短路(點非常多)
/************************************************************** User: error408 Language: C/C++ School: SSDUT Saying: Do one thing at a time
[圖論]floyed最短路(災後重建)
之前 兩個 pst 什麽 C4D sin 短路徑 string 重建 災後重建 Description B地區在地震過後,所有村莊都造成了一定的損毀,而這場地震卻沒對公路造成什麽影響。但是在村莊重建好之前,所有與未重建完成的村莊的公路均無法通車。換句話說,只有連接著兩個
POJ2594:Treasure Exploration(Floyd + 最小路徑覆蓋)
body bsp sent space p s form desc after floyd Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 9794
最小生成樹(prime演算法、kruskal演算法) 和 最短路徑演算法(floyd、dijkstra)
簡介: 帶權圖分為有向和無向,無向圖的最短路徑又叫做最小生成樹,有prime演算法和kruskal演算法;有向圖的最短路徑演算法有dijkstra演算法和floyd演算法。 生成樹