日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最短路径(SPFA算法)

發布時間:2024/9/3 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最短路径(SPFA算法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1200: 小明的難題
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 363 Solved: 103
[Submit][Status][Web Board]
Description

這是一個小明認為很難的問題,快到五一長假了,小明突然想去旅游,但是他有一些想去的地方,他搜集了他想去的地方的路線信息,但是他搜集的信息太多了,因此他決定把制定路線的事情交給你(他的大管家)。為了描述方便,我們將他可能要經過的n個城市編號1,2,…, n,當然他要求他到目的地所需的時間最短。

Input

一共有t組數據,每組數據的第一行有兩個正整數n, m,(n<=1000,m<=10000)分別表示城市的數量和路的條數,接下來m行,每行有三個整數a,b,c,(1=<a,b<=n ,0<c<100), 分別表示城市a和 城市b之間有一條路要花c的時間,最后一行的兩個整數s,e,代表小明的起始點和目的地。

Output

輸出一路上要花掉的時間,當然由于時間倉促,有可能搜集的信息不能到達目的地,這時請輸出-1

Sample Input

2
3 2
1 2 2
2 3 3
1 3
4 2
1 2 3
1 3 2
1 4

Sample Output

5
-1

HINT

Source
ac_code:

#include <bits/stdc++.h> #define inf 99999999 #define N 1005 using namespace std; int a[N][N];//邊的權值 int dis[N];//起點到其他各點的距離 int vis[N];//入隊標記數組 int n,m;//點數,邊數 //Shortest Path Faster Algorithm int SPFA(int s,int e) {dis[s] = 0;//起點到起點的距離為0queue<int>q;q.push(s);vis[s] = 1;while(!q.empty()){int k = q.front();q.pop();vis[k] = 0;//標記已經出隊列for(int i = 1; i <= n; i++){if(dis[i] > dis[k] + a[k][i])//松弛{dis[i] = dis[k] + a[k][i];if(vis[i]==0)//vis數組標記,保證已經在隊列中的點不再入隊{q.push(i);vis[i] = 1;}}}}return dis[e]; } int main() {int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);//初始化操作for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){if(i==j)a[i][j] = 0;elsea[i][j] = inf;}}for(int i = 1; i <= n; i++){dis[i] = inf;vis[i] = 0;}//讀入邊while(m--){int t1,t2,v;scanf("%d%d%d",&t1,&t2,&v);a[t1][t2] = a[t2][t1] = min(a[t1][t2],v);}int s,e,res;scanf("%d%d",&s,&e);res =SPFA(s,e);if(res==inf)printf("-1\n");elseprintf("%d\n",res);}return 0; }

總結

以上是生活随笔為你收集整理的最短路径(SPFA算法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。