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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短

發布時間:2025/4/5 c/c++ 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 題目分析
    • 題目鏈接

題目分析



來源:acwing
分析:dijkstra求單源最短路的題目。 只是寫兩遍而已,第一遍求按照路徑長度求,第二遍按照時間最少求。 另外加一個vector路徑的判斷相等。

輸入輸出有點復雜。

ac代碼

#include<bits/stdc++.h> using namespace std; const int N = 510; bool st[N],st1[N]; int n,m,S, T; //起點和終點路口編號int dist[N]; //長度 int d[N][N],c[N][N];//d是長度, c是時間 int cnt[N]; //統計路口個數 int pre1[N],pre2[N]; int sum[N];// 時間之和 //求距離最短 void dijkstra(){memset(dist, 0x3f, sizeof dist);dist[S] = 0;sum[S] = 0;for(int i = 0; i< n; i++){int t = -1;for( int j =0; j< n; j++){if(!st[j] &&(t == -1 || dist[j]<dist[t]))t = j;}st[t] =true;for(int j = 0 ;j < n; j++){if( dist[j] > dist[t] + d[t][j]){dist[j] = dist[t] +d[t][j];//長度更新sum[j] =sum[t] + c[t][j]; //時間更新pre1[j] = t;}else if(dist[j] == dist[t] + d[t][j] && sum[j] > sum[t] + c[t][j]){sum[j] = sum[t] +c[t][j];pre1[j] = t;}} } }//求時間最短 void dijkstra1(){memset(sum, 0x3f, sizeof sum);sum[S] = 0;cnt[S]=1;for(int i = 0; i< n; i++){int t = -1;for( int j =0; j< n; j++){if(!st1[j] &&(t == -1 || sum[j]<sum[t]))t = j;}st1[t] =true;for(int j = 0 ;j < n; j++){if( sum[j] > sum[t] + c[t][j]){sum[j] = sum[t] +c[t][j];//長度更新cnt[j] =cnt[t]+1;pre2[j] = t;}else if(sum[j] == sum[t] + c[t][j] && cnt[j] > cnt[t] + 1){cnt[j] =cnt[t] +1;pre2[j] = t;}}} }int main(){memset(d, 0x3f, sizeof d); //邊的長度,鄰接矩陣存memset(c, 0x3f, sizeof c); //邊的時間,鄰接矩陣存cin >> n >> m;while(m--){ //m個街道int a ,b, flag, length , time1;cin >> a >> b>> flag >> length >>time1;if(flag == 1) //有向邊d[a][b] = min(d[a][b],length),c[a][b] =min(c[a][b],time1);//無向邊else d[a][b] = d[b][a] = min(d[a][b],length),c[a][b]=c[b][a] =min(c[a][b],time1);}cin >> S >> T;//起點和終點dijkstra();//保存路徑vector<int> path1;for(int i = T; i!=S; i =pre1[i]) path1.push_back(i);dijkstra1();vector<int> path;for(int i = T; i!=S; i =pre2[i]) path.push_back(i);//輸出//如果兩個路徑相同if(path1 == path){printf("Distance = %d; Time = %d: ",dist[T],sum[T]);cout<<S;for(int i =path1.size() -1; i>=0 ;i--) cout<<" -> "<<path1[i];cout<<endl;}//不相同else{printf("Distance = %d: ",dist[T]);cout<<S;for(int i =path1.size() -1; i>=0 ;i--) cout<<" -> "<<path1[i];cout<<endl;printf("Time = %d: ",sum[T]);cout<<S;for(int i =path.size() -1; i>=0 ;i--) cout<<" -> "<<path[i];cout<<endl;} }

題目鏈接

PAT甲級1111 Online Map (30分)
https://www.acwing.com/problem/content/description/1603/

總結

以上是生活随笔為你收集整理的PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 青青草国产| 999精品在线观看 | 中文字幕一级片 | 亚洲黄一区 | 很黄很黄的网站 | 日韩激情| 欧美精品在线看 | 国产每日更新 | 美女扒开让男人桶爽 | 国产乱子轮xxx农村 岛国久久久 | 日本三级久久 | 美梦视频大全在线观看高清 | 任你操精品视频 | 欧美亚洲色综久久精品国产 | 亚州av免费 | 182在线视频 | 欧美黄色大片视频 | 美女爆乳18禁www久久久久久 | 一区高清 | 亚洲色图首页 | 国产精品亚洲专区无码牛牛 | 北京富婆泄欲对白 | 涩涩网站入口 | 日本一区二区免费在线 | 亚洲黄在线 | 亚洲第九十七页 | 黄色一级片在线免费观看 | av午夜精品 | 国产伦精品一区二区三区四区免费 | 超碰91在线观看 | 拔擦8x成人一区二区三区 | 天堂av网手机版 | 亚洲精品视频在线观看免费视频 | 欧美一级片在线看 | 国产猛男猛女超爽免费视频 | 国产片淫乱18一级毛片动态图 | 中文无码精品一区二区三区 | 中国少妇无码专区 | 成人精品一区二区三区四区 | 在线观看涩涩视频 | 成人观看 | 欧洲亚洲国产精品 | 一本到免费视频 | 西野翔之公侵犯中文字幕 | 日本特黄一级大片 | 性久久久久久 | 丁香婷婷久久 | 这里只有精品999 | 日本一区二区免费看 | 久久精品视频3 | 羞羞的视频网站 | 在线欧美一区二区 | 国产剧情久久 | 精品视频无码一区二区三区 | 粉嫩av一区二区三区 | 午夜不卡久久精品无码免费 | 一区二区福利视频 | 国产无遮挡一区二区三区毛片日本 | 青青青在线观看视频 | 国产精品女同一区二区 | 在线免费观看黄色网址 | 大肉大捧一进一出视频 | 亚洲成av| 日本黄色小视频 | 欧美丰满熟妇xxxxx | √天堂| 高h视频在线观看 | 国产97色在线 | 国产 | 亚洲在线综合 | 亚洲剧情在线 | 99re8在线精品视频免费播放 | 色91| 欧美一区二区三区小说 | 激情五月激情 | 91久久精品一区 | 白石茉莉奈番号 | 国产真实在线 | 借种(出轨高h) | 91丨porny丨在线中文 | 女的高潮流时喷水图片大全 | 国产91香蕉| 亚洲自拍偷拍精品视频 | 精品久久久久久久久久久久久久久久久 | 偷偷操视频 | 狠狠操网 | 免费看黄色aaaaaa 片 | 9久精品| 神马久久久久久久久久 | 伊人久久久久久久久久久久 | 天天摸天天插 | 国产传媒第一页 | 午夜天堂精品 | 亚洲一区二区三区电影在线观看 | 国产精品一区二区三区在线看 | 奇米影视四色在线 | 欧美69视频 | 亚洲国产一区二区三区 | 国产精品手机在线观看 | 中国黄色录像 |