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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

pat1003 迪杰斯特拉法和dfs求最短路

發(fā)布時間:2025/4/9 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pat1003 迪杰斯特拉法和dfs求最短路 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本題的背景是求定點和定點之間的最短路問題(所有的最短路 不是一個解? 是全部解,方法手段來自數(shù)據(jù)結(jié)構(gòu)課程中的迪杰斯特拉算法和dfs(深度優(yōu)先遍歷)。

分別用兩種方法編程如下代碼

  • dfs
#include <iostream> #include <cstring> #include <cstdio> using namespace std; #define maxv 510 bool visit[maxv];int arc[maxv][maxv];//鄰接矩陣int M,N,C1,C2; //M總頂點數(shù),N總邊數(shù),C1起點,C2終點int vex[maxv]; //記錄每個頂點的救援人數(shù)int mind=0xfffffff,maxr=0,cnt;//mind最短路徑,maxr最大救援人數(shù),cnt最短路徑條數(shù)void dfs(int st,int end,int curPath,int curRes){if (st==end){if (curPath<mind){cnt=1;mind=curPath;maxr=curRes;}else if(curPath==mind){cnt++;if (curRes>maxr)maxr=curRes;}return;}else{for (int k=0;k<M;k++){if (arc[st][k]!=0&&!visit[k]){visit[k]=1;dfs(k,end,curPath+arc[st][k],curRes+vex[k]);visit[k]=0;}}return ;} } int main(){while(scanf("%d%d%d%d",&M,&N,&C1,&C2)!=EOF){memset(arc,0,sizeof(arc));for(int i=0;i<M;i++)scanf("%d",&vex[i]);int i,j,d;for(int k=0;k<N;k++){scanf("%d%d%d",&i,&j,&d);arc[j][i]=arc[i][j]=d;}memset(visit,0,sizeof(visit));visit[C1]=1;dfs(C1,C2,0,vex[C1]);printf("%d %d",cnt,maxr);}return 0; }
  • 容易放的錯誤是mind,maxr忘記賦初始值? ??
  • 矩陣scanf輸入的時候&arg[i][j]? 不會報錯? 但會導(dǎo)致輸入異常? ?這個問題我也很奇怪? 先在這里記錄說明了
  • ?

    •   迪杰斯特拉算法
    #include <iostream> #include <cstdio> using namespace std; #define maxv 510 #define inf 65536int arc[maxv][maxv];//鄰接矩陣int M,N,C1,C2; //M總頂點數(shù),N總邊數(shù),C1起點,C2終點int vex[maxv]; //記錄每個頂點的救援人數(shù)int maxr=0,cnt;//mind最短路徑,maxr最大救援人數(shù),cnt最短路徑條數(shù)int Path[maxv],D[maxv],S[maxv];//Path[]記錄從源點v0到終點vi的直接前驅(qū)頂點序號//D[]記錄從源點v0到終點vi的當(dāng)前最短路徑長度//S[]記錄從源點v0到源點vi是否已經(jīng)被確定最短路徑長度/*計算v0到j(luò)的當(dāng)前最大救援人數(shù)*/ void compute(int v0,int j){int curRes=vex[v0];for (int k=j;k!=v0;k=Path[k]){curRes+=vex[k];}if (curRes>maxr)maxr=curRes;return; }void dijistra(int v0,int v){int mind,w;//mind最短路徑 w被加入到S中的頂點序號int curRes=0;/*初始化*/for (int i=0;i<M;i++){S[i]=false;D[i]=arc[v0][i];if (D[i]<inf)Path[i]=v0;elsePath[i]=-1;}cnt=1;compute(v0,v);S[v0]=true;D[v0]=0;/*v0到其他M-1個頂點的最短路徑*/for (int i=1;i<M;i++){mind=inf;for (int j=0;j<M;j++)if (!S[j]&&D[j]<mind){w=j;mind=D[j];}S[w]=true;for (int j=0;j<M;j++)if (!S[j]&&(D[w]+arc[w][j]<D[j])){D[j]=D[w]+arc[w][j];Path[j]=w;if (j==v){cnt=1;maxr=0;compute(v0,j);}}else if (!S[j]&&D[w]+arc[w][j]==D[j]){Path[j]=w;if (j==v){cnt++;/*v0到頂點j的當(dāng)前最短路徑不止一條*/compute(v0,j);}}}return; } int main(){while(scanf("%d%d%d%d",&M,&N,&C1,&C2)!=EOF){for (int i=0;i<M;i++)for (int j=0;j<M;j++)arc[i][j]=inf;for(int i=0;i<M;i++)scanf("%d",&vex[i]);int i,j,d;for(int k=0;k<N;k++){scanf("%d%d%d",&i,&j,&d);arc[j][i]=arc[i][j]=d;}dijistra(C1,C2);printf("%d %d\n",cnt,maxr);//printf("%d %d %d %d %d\n",cnt,maxr,D[C2],Path[C2],Path[Path[C2]]);/*for (int i=0;i<M;i++){for (int j=0;j<M;j++)printf("%d ",arc[i][j]);printf("\n");}*/}return 0; }

      這段代碼目前只能通過pat平臺的三個測試樣例? 得 16分? ?后續(xù)會 改bug??

    轉(zhuǎn)載于:https://www.cnblogs.com/mdz-great-world/p/7598108.html

    總結(jié)

    以上是生活随笔為你收集整理的pat1003 迪杰斯特拉法和dfs求最短路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 亚洲一区在线免费观看 | 好吊妞无缓冲视频观看 | 青草青草久热 | 日本孰妇毛茸茸xxxx | 天天做日日干 | 国产免费黄网站 | 日本视频黄 | 男女www视频 | 国产伦精品一区二区三区视频女 | 另类亚洲色图 | 国产高清免费在线 | 国产任你操 | 高潮爽爆喷水h | 四色成人网 | 第四色视频 | 波多野结衣在线一区二区 | 性感美女视频一二三 | 伊人春色在线 | 狠狠躁夜夜 | 蜜臀av一区 | 亚洲天堂女人 | 91涩漫成人官网入口 | 亚洲精品无人区 | 色鬼久久 | 91黄色免费网站 | 亚色成人 | 不许穿内裤随时挨c调教h苏绵 | 黄色网址在线免费 | 国产又黄又猛的视频 | 久久99精品久久久久久国产越南 | 美女啪啪网址 | 污夜影院| 欧美午夜在线观看 | 亚洲天堂中文字幕在线观看 | 久久人妻一区二区 | 玖玖五月| 91热爆视频 | 国产在视频线精品视频 | 日本欧美一区二区 | 97超视频 | 中文在线观看av | 亚洲欧美成人 | 精品国产一区二区三区四区阿崩 | 天天看片天天操 | 青青草国内自拍 | 成人黄色录像 | 亚洲天堂中文在线 | 日韩美在线| 校园春色综合网 | 99re国产精品 | 日韩三级av | 日本老熟妇乱 | 亚洲一区电影 | 国产精品99久久久久久久久久久久 | 国产精品久久久久国产a级 国产一区二区在线播放 | 国产精品无码久久久久久电影 | 美女网站视频在线观看 | 亚洲影院一区二区三区 | 粗口调教gay2022.com| 日本黄色免费 | 亚洲成人基地 | 性生活视频播放 | 中文字幕久久精品 | 99成人 | 成人黄色免费网址 | 黄色片在线免费看 | 日本高清免费看 | 最新最近中文字幕 | 中文字幕一区二区三区四区欧美 | 精品一区二区三区四区视频 | 中文字幕电影一区二区 | 成人午夜精品福利免费 | 欧美成人综合 | 韩国一区二区在线播放 | 日韩啪啪网站 | 88久久精品无码一区二区毛片 | 人人人妻人人澡人人爽欧美一区 | 特大黑人巨交吊性xx | 日韩诱惑 | 手机在线看片日韩 | 一区二区一级片 | 欧美一区二区在线视频观看 | 天天干天天干天天干 | 91精品啪在线观看国产 | 天天色播 | 国产免费久久 | 2020狠狠干 | 黄色一级视频免费 | 91桃色网站 | aa一级视频 | 欧美在线中文 | 色一情 | 亚洲一级黄色 | 亚洲AV无码阿娇国产精品 | 成人精品福利视频 | 日本一区二区视频免费 | 日韩在线观看视频一区二区三区 | 欧美一区二区三区久久综合 | jizzjizz免费|