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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

hdu 2680 Choose the best route

發(fā)布時間:2025/4/5 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 2680 Choose the best route 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2680

簡單最短路問題。。。。。

運行結(jié)果:

Accepted2680265MS4164K1382 BC++
//dijkstra #include<stdio.h> #define INF (1<<30) #define MAXN 1005 int map[MAXN][MAXN],n,m,s,d[MAXN],dis[MAXN]; bool vis[MAXN]; void dijkstra(int start) {int i,j,k;for(i = 1; i <= n; i++)//初始化所有點為未訪問過,起點到所有其他點的距離為無窮遠vis[i] = false,dis[i] = INF;//將起點到個頂點的距離保存在dis數(shù)組中for(i = 1; i <= n; i++)dis[i] = map[start][i];//起點到其本身的距離為0,并將其標記為已經(jīng)訪問過dis[start] = 0;vis[start] = true;//在將n-1個頂點加入到最短路中for(i = 1; i < n; i++){int min = INF;for(j = 1; j <= n; j++){if(!vis[j] && dis[j] < min){min = dis[j];k = j;}}if(min == INF)continue;vis[k] = true;for(j = 1; j <= n; j++){if( !vis[j] && dis[j] > min + map[k][j])dis[j] = min + map[k][j];}} } int main() {int i,j,start,end,cost,w;while(scanf("%d%d%d",&n,&m,&s) != EOF){for(i = 0; i <= n; i++)for(j = 0; j <= n; j++){map[i][j] = (i == j ? 0 : INF);}for(i = 0; i < m; i++){scanf("%d%d%d",&end,&start,&cost);if(map[start][end] > cost)map[start][end] = cost;}dijkstra(s);scanf("%d",&w);int min = INF;while( w-- ){scanf("%d",&end);if(dis[end] < min)min = dis[end];}if(min == INF)printf("-1\n");elseprintf("%d\n",min);}return 0; }


運行結(jié)果:

Accepted2680125MS496K1270 BC++
//spfa #include<cstdio> #include<cstring> #include<queue> using namespace std; #define INF (1<<30) struct node {int v,cost;node *next; }*head[1005],edge[20005]; int dis[1005]; bool vis[1005]; int n,m,s; queue<int> que; void spfa(int start) {int i = 0;for(i = 1; i <= n; i++)dis[i] = INF;memset(vis,false,sizeof(vis));vis[start] = true;dis[start] = 0;que.push(start);while( !que.empty() ){int now = que.front();que.pop();vis[now] = false;for(node *p = head[now]; p ; p = p->next){if(dis[p->v] > dis[now] + p->cost){dis[p->v] = dis[now] + p->cost;if( !vis[p->v]){vis[p->v] = true;que.push(p->v);}}}} } int main() {int i,start,end,cost,w,min;node *p;while(scanf("%d%d%d",&n,&m,&s) != EOF){for(i = 1; i <= n; i++)head[i] = NULL;p = edge;for(i = 0; i < m; i++){scanf("%d%d%d",&start,&end,&cost);p->v = start;p->cost = cost;p->next = head[end];head[end] = p++;}spfa(s);scanf("%d",&w);min = INF;while( w-- ){scanf("%d",&start);if(dis[start] < min)min = dis[start];}if(min == INF)printf("-1\n");elseprintf("%d\n",min);}return 0; }


?

轉(zhuǎn)載于:https://www.cnblogs.com/LUO257316/archive/2012/09/03/3220864.html

總結(jié)

以上是生活随笔為你收集整理的hdu 2680 Choose the best route的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。