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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hdu1874 畅通工程续

發(fā)布時(shí)間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu1874 畅通工程续 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

某省自從實(shí)行了很多年的暢通工程計(jì)劃后,終于修建了很多路。不過(guò)路多了也不好,每次要從一個(gè)城鎮(zhèn)到另一個(gè)城鎮(zhèn)時(shí),都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。?

現(xiàn)在,已知起點(diǎn)和終點(diǎn),請(qǐng)你計(jì)算出要從起點(diǎn)到終點(diǎn),最短需要行走多少距離。 Input本題目包含多組數(shù)據(jù),請(qǐng)?zhí)幚淼轿募Y(jié)束。?
每組數(shù)據(jù)第一行包含兩個(gè)正整數(shù)N和M(0<N<200,0<M<1000),分別代表現(xiàn)有城鎮(zhèn)的數(shù)目和已修建的道路的數(shù)目。城鎮(zhèn)分別以0~N-1編號(hào)。?
接下來(lái)是M行道路信息。每一行有三個(gè)整數(shù)A,B,X(0<=A,B<N,A!=B,0<X<10000),表示城鎮(zhèn)A和城鎮(zhèn)B之間有一條長(zhǎng)度為X的雙向道路。?
再接下一行有兩個(gè)整數(shù)S,T(0<=S,T<N),分別代表起點(diǎn)和終點(diǎn)。Output對(duì)于每組數(shù)據(jù),請(qǐng)?jiān)谝恍欣镙敵鲎疃绦枰凶叩木嚯x。如果不存在從S到T的路線,就輸出-1.?
Sample Input 3 3 0 1 1 0 2 3 1 2 1 0 2 3 1 0 1 1 1 2Sample Output 2 -1
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <set> #define INF 9999999 #define maxn 1100 int lowcost[maxn]; int mapp[maxn][maxn]; int vis[maxn]; int n,m; using namespace std; void dkstl(int a) {//memset(vis,0,sizeof(vis));int k,sum=0;for(int i=0;i<n;++i){lowcost[i]=mapp[a][i];vis[i]=0;}vis[a]=1;for(int j=0;j<n;++j){int minx=INF;for(int ?i=0;i<n;++i ){if(lowcost[i]<minx&&!vis[i]){minx=lowcost[i];k=i;}}vis[k]=1;if(minx==INF)break;for(int i=0;i<n;++i){if(!vis[i]&&(lowcost[k]+mapp[k][i])<lowcost[i]){lowcost[i]=lowcost[k]+mapp[k][i];}}} } int main() {int a,b,c,x;while(scanf("%d%d",&n,&m)!=EOF){for(int i=0;i<n;++i)for(int j=0;j<n;++j){if(i==j)mapp[i][j]=0;elsemapp[i][j]=INF;}for(int i=0;i<m;++i){scanf("%d%d%d",&a,&b,&c);if(mapp[a][b]>c)//開始gg在這兒了,當(dāng)有重邊的時(shí)候要取權(quán)值的最小值mapp[a][b]=mapp[b][a]=c;}scanf("%d%d",&a,&b);dkstl(a);if(lowcost[b]==INF)cout<<-1<<endl;elsecout<<lowcost[b]<<endl;}return 0; }

floyd

#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <set> #define INF 9999999 #define maxn 1100 int lowcost[maxn]; int mapp[maxn][maxn]; int vis[maxn]; int n,m; using namespace std; int floyd(int a,int b) {for(int k=0;k<n;++k)for(int i=0;i<n;++i)for(int j=0;j<n;++j){if(mapp[i][j]>mapp[i][k]+mapp[k][j])mapp[i][j]=mapp[i][k]+mapp[k][j];}return mapp[a][b]; } int main() {int a,b,c,x;while(scanf("%d%d",&n,&m)!=EOF){for(int i=0;i<n;++i)for(int j=0;j<n;++j){if(i==j)mapp[i][j]=0;elsemapp[i][j]=INF;}for(int i=0;i<m;++i){scanf("%d%d%d",&a,&b,&c);if(mapp[a][b]>c)//開始gg在這兒了,當(dāng)有重邊的時(shí)候要取權(quán)值的最小值mapp[a][b]=mapp[b][a]=c;}scanf("%d%d",&a,&b);int x=floyd(a,b);if(x==INF)cout<<-1<<endl;elsecout<<x<<endl;}return 0; } gg /*#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <set> #define INF 9999999 #define maxn 1100 int lowcost[maxn]; int mapp[maxn][maxn]; int vis[maxn]; int n,m; using namespace std; int dkstl(int a,int b) {int k,sum=0;for(int i=0;i<n;++i){lowcost[i]=mapp[a][i];vis[i]=0;}vis[a]=1;for(int j=1;j<n;++j){int minx=INF;for(int i=0;i<n;++i ){if(lowcost[i]<minx&&!vis[i]){minx=lowcost[i];k=i;}}if(minx==INF)break;sum+=minx;vis[k]=1;if(k==b){return sum;}for(int i=0;i<n;++i){if(!vis[i]&&lowcost[i]>mapp[k][i])lowcost[i]=mapp[k][i];}}return INF; } int main() {int a,b,c,x;while(scanf("%d%d",&n,&m)!=EOF){for(int i=0;i<n;++i)for(int j=0;j<n;++j){if(i==j)mapp[i][j]=0;elsemapp[i][j]=INF;}for(int i=0;i<m;++i){scanf("%d%d%d",&a,&b,&c);if(mapp[a][b]>c)//開始gg在這兒了,當(dāng)有重邊的時(shí)候要取權(quán)值的最小值mapp[a][b]=mapp[b][a]=c;}scanf("%d%d",&a,&b);int x=dkstl(a,b);if(x==INF)cout<<-1<<endl;elsecout<<x<<endl;}return 0; } */

SPFA:

#include <iostream> #include <cstring> #define maxn 1000 #define INF 999999 using namespace std; int map[maxn][maxn]; int p[maxn][maxn]; int vis[maxn]; int dist[maxn]; int n,m; int SPFA(int start) {int head=0,tail=1; int q[maxn*2];memset(q,0,sizeof(q));for(int i=0;i<=n;i++)dist[i]=INF;dist[start]=0; vis[start]=1; q[1]=start;//q[1]while(head<tail){head++;int t=q[head];vis[t]=0;for(int i=1;i<=p[t][0];++i){if(dist[p[t][i]]>dist[t]+map[t][p[t][i]]){dist[p[t][i]]=dist[t]+map[t][p[t][i]];//dist[p[t][i]]是直接到p[t][i]點(diǎn)的距離,dist[t]是直接到t的距離,map[t][p[t][i]]是經(jīng)t到p[t][i]的距離 if(!vis[p[t][i]]){q[++tail]=p[t][i];vis[p[t][i]]=1; }}} } } int main() {int z,x,y;while(cin>>n>>m){memset(dist,0,sizeof(dist));memset(map,0,sizeof(map));memset(p,0,sizeof(p));memset(vis,0,sizeof(vis));for(int i=0;i<m;++i){cin>>x>>y>>z;if(map[x][y]!=0&&map[x][y]<z)continue;p[x][0]++,p[x][p[x][0]]=y,map[x][y]=z;p[y][0]++,p[y][p[y][0]]=x,map[y][x]=z;}int start,end;cin>>start>>end;SPFA(start);if(dist[end]!=INF)cout<<dist[end]<<endl;elsecout<<"-1"<<endl;}return 0; }

SPFA&SPFA+dfs優(yōu)化

#include <iostream> #include <cstring> #define maxn 1000 #define INF 999999 using namespace std; int map[maxn][maxn]; int p[maxn][maxn]; int vis[maxn]; int dist[maxn]; int n,m; /*int SPFA(int start) {int head=0,tail=1; int q[maxn*2];memset(q,0,sizeof(q));for(int i=0;i<=n;i++)dist[i]=INF;dist[start]=0; vis[start]=1; q[1]=start;//q[1]while(head<tail){head++;int t=q[head];vis[t]=0;for(int i=1;i<=p[t][0];++i){if(dist[p[t][i]]>dist[t]+map[t][p[t][i]]){dist[p[t][i]]=dist[t]+map[t][p[t][i]];//dist[p[t][i]]是直接到p[t][i]點(diǎn)的距離,dist[t]是直接到t的距離,map[t][p[t][i]]是經(jīng)t到p[t][i]的距離 if(!vis[p[t][i]]){q[++tail]=p[t][i];vis[p[t][i]]=1; }}} } }*/ int SPFA(int start) {for(int i=1;i<=p[start][0];++i){if(dist[p[start][i]]>dist[start]+map[start][p[start][i]]){dist[p[start][i]]=dist[start]+map[start][p[start][i]];//start是經(jīng)過(guò)的SPFA(p[start][i]);}} } int main() {int z,x,y;while(cin>>n>>m){// memset(dist,0,sizeof(dist));memset(map,0,sizeof(map));memset(p,0,sizeof(p));// memset(vis,0,sizeof(vis));for(int i=0;i<m;++i){cin>>x>>y>>z;if(map[x][y]!=0&&map[x][y]<z)continue;p[x][0]++,p[x][p[x][0]]=y,map[x][y]=z;p[y][0]++,p[y][p[y][0]]=x,map[y][x]=z;}int start,end;cin>>start>>end;for(int i=0;i<=n;++i){dist[i]=INF;}dist[start]=0;SPFA(start);if(dist[end]!=INF)cout<<dist[end]<<endl;elsecout<<"-1"<<endl;}return 0; }

總結(jié)

以上是生活随笔為你收集整理的hdu1874 畅通工程续的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: 女女av在线 | 紧身裙女教师三上悠亚红杏 | 涩涩屋污 | 全部孕妇毛片 | 91 久久 | 男人懂得网站 | 91操人 | av导航站| 91精品国产综合久久福利 | 成人性生交免费看 | 日韩av色 | 顶级尤物极品女神福利视频 | 国产一区二区黑人欧美xxxx | 日本三级免费网站 | av影片在线看 | 都市激情校园春色 | 久久不射电影网 | 成人里番精品一区二区 | 性欧美videos高清hd4k | 日韩乱码一区二区三区 | 麻豆剧场 | 欧洲精品在线播放 | 美女露出粉嫩尿囗让男人桶 | a天堂中文字幕 | 免费在线欧美 | 岛国大片在线观看 | 亚洲一区二区三区久久久成人动漫 | 女同动漫免费观看高清完整版在线观看 | av激情四射 | 动漫美女无遮挡免费 | 仙踪林av| 国产操人 | 精品国产一区二区三区四区阿崩 | 香蕉视频官网在线观看 | 国产综合在线视频 | 免费久久久久久 | 成人黄色短视频在线观看 | 特级黄色录像 | 久久精品一二三区 | а√天堂www在线天堂小说 | 欧美日韩中文在线观看 | 污污的视频在线观看 | 草久在线观看视频 | 钰慧的mv视频在线观看 | 国产精品毛片va一区二区三区 | 小向美奈子在线观看 | 成人1区 | 国产精品污 | bl动漫在线观看 | 激情六月天 | 亚洲毛片视频 | 重口变态虐黄网站 | 91丨porny丨九色 | 亚洲av无一区二区三区久久 | 在线观看国产区 | 久久精品国产欧美亚洲人人爽 | 欧美精品一区在线观看 | 第四色影音先锋 | 精品久久免费视频 | 国产精品久久婷婷六月丁香 | 在线日韩国产 | 一本一道av | 国产精品久久久久久久久久久久久久久 | 欧美成人一区二区 | 国产欧美日韩在线视频 | 国产视频一区二区三 | 美女自拍偷拍 | 国产日韩欧美在线观看 | 午夜精品国产精品大乳美女 | 国产女主播av | 91网页入口 | 99精品久久久 | 日韩欧美aaa | 国语精品久久 | 色哟哟入口 | 国产久视频 | 久久爱99 | 亚洲精品一区二区潘金莲 | 美女av免费看 | 欧美一级性生活视频 | 第四色男人天堂 | 日批av| 国产精品久久久久久久久免费桃花 | 免费裸体视频网站 | 蜜桃视频在线观看污 | 美女被爆操网站 | 精品久久久久久久久久岛国gif | 2019日韩中文字幕mv | 精品国产99一区二区乱码综合 | 国产午夜福利精品 | 成年人黄色片网站 | 黑白配高清国语在线观看 | 一区二区免费在线观看视频 | 亚洲精品小说 | 国产偷国产偷av亚洲清高 | wwwxxx日本人| 91在线精品李宗瑞 | 国产96在线 | 亚洲 | 国产在线一二区 |