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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HDU 2066 一个人的旅行

發布時間:2024/8/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 2066 一个人的旅行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

求最短路,以草兒所在的地方設為0,當做源點,草兒臨近的城市到草兒的距離設為0
這里有一點要注意:并不是1~N的城市都出會出現,所以我用city數組來存儲出現過的城市編號,

如city[i]=1表示 i 出現在數據里,這樣就減少不必要的遍歷。

?

#include <iostream> #include <algorithm> #include <string.h> #include <stdio.h> #include <string> #include <vector> #include <queue>using namespace std; const int maxn=0x3f3f3f3f;int road[1010][1010];//road[i][j]表示i與j的距離(這里指進過該條路的時間) int dis[1010];//dis[i]表示i點到源點1的最短路徑大小 int vis[1010];//vis[i]=1表示節點i已經求過到源點的單源最短路徑 int city[1010];//city[i]=1表示存在該城市,即該城市在數據里出現過 vector<int> link[1010];//link[i]表示i與哪些點連接 vector<int> goal;//存儲喜歡去的城市。 int T,S,D; int a,b,c,t;struct Node{int u,dis;bool operator<(const Node tmp) const{return dis>tmp.dis; //優先級序列默認的是最先取出的是“最大的”。 }//如果按從小到大排,則優先級隊列取最大的。//如果從大到小排,則優先級隊列取最小的。 };void dijkstra(){priority_queue<Node> q;Node tmp,a;memset(dis,maxn,sizeof(dis));memset(vis,0,sizeof(vis));dis[0]=0;city[0]=1;a.u=0;a.dis=0;q.push(a);while(!q.empty()){tmp=q.top();q.pop();int idx=tmp.u;vis[idx]=1;for(int k=0; k<link[idx].size(); k++) {int v=link[idx][k];if(v!=idx && !vis[v]) {if(dis[idx]+road[idx][v]<dis[v]) {dis[v]=dis[idx]+road[idx][v];a.u=v;a.dis=dis[v];q.push(a);}}}} }int main() {while(scanf("%d%d%d",&T,&S,&D)!=EOF) {//U.clear();memset(road,0,sizeof(road));memset(city,0,sizeof(city));goal.clear();for(int i=0; i<1010; i++)link[i].clear();for(int i=0; i<T; i++) {scanf("%d%d%d",&a,&b,&c);if(!road[a][b]) {city[a]=1;city[b]=1;road[a][b]=c;road[b][a]=c;link[a].push_back(b);link[b].push_back(a);} else if(c<road[a][b]) {road[a][b]=c;road[b][a]=c;}}for(int i=0; i<S; i++) {scanf("%d",&t);link[0].push_back(t);}for(int i=0; i<D; i++) {scanf("%d",&t);goal.push_back(t);}dijkstra();int mintime=maxn;for(int i=0; i<D; i++) {int v=goal[i];mintime=min(mintime,dis[v]);}printf("%d\n",mintime);}return 0; }

?


?

轉載于:https://www.cnblogs.com/chenxiwenruo/p/3280472.html

總結

以上是生活随笔為你收集整理的HDU 2066 一个人的旅行的全部內容,希望文章能夠幫你解決所遇到的問題。

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