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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

使用分支限界法解决单源最短路径问题。

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用分支限界法解决单源最短路径问题。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


#include<iostream> #include<cstdio> #include<queue> using namespace std;typedef struct ArcCell{int weight;//保存權值 weight=1說明一開始就輸入了這條邊,=0說明這兩個點之間沒有邊 int min_length;//存儲最短路徑長度 }ArcCell,AdjMaxtrix[100][100];typedef struct{int data;//頂點編號 int length;//起始頂點到data編號頂點的最短路徑 }VerType;typedef struct{VerType vexs[100];//頂點向量AdjMaxtrix arcs;int dingdian;//頂點數int bian;//邊的數量 }Graph;Graph G; queue<int> q;void CreateGraph() {int m,n,t;printf("輸入頂點數和邊數:");scanf("%d%d",&G.dingdian,&G.bian);printf("輸入頂點編號:");for(int i=1 ; i<=G.dingdian ; i++){scanf("%d",&G.vexs[i].data);G.vexs[i].length=10000;}for(int i=1;i<=G.dingdian;i++)for(int j=1;j<=G.dingdian;j++){G.arcs[i][j].weight=0;//先置零 weight=1說明一開始就輸入了這條邊,=0說明這兩個點之間沒有邊 }printf("輸入所有邊的起點、終點和邊長(用空格隔開):\n");for(int i=1;i<=G.bian;i++){scanf("%d%d%d",&m,&n,&t);G.arcs[m][n].weight=1;//weight=1說明一開始就輸入了這條邊,=0說明這兩個點之間沒有邊 G.arcs[m][n].min_length=t;} }int Nextweight(int v,int w) {for(int i=w+1;i<=G.dingdian;i++)if(G.arcs[v][i].weight) return i;//返回已有的邊中序號最前的 return 0;//未找到符合條件結點,就直接返回最初的結點; }void ShortestPaths(int v) {int k=0;//從首個節點開始訪問,k記錄想要訪問結點的位置 int t;G.vexs[v].length=0;q.push(G.vexs[v].data);while(!q.empty())//隊列q不為空的時候執行循環 {t=q.front();//t為隊列中第一個元素,也就是最先要被彈出的結點,返回值是其編號,第一次執行這一步時是 G.vexs[1].data,初始結點的編號 k=Nextweight(t,k);//k不斷更新為已有的邊中序號最前的 while(k!=0){if(G.vexs[t].length+G.arcs[t][k].min_length<=G.vexs[k].length)//減枝操作{G.vexs[k].length=G.vexs[t].length+G.arcs[t][k].min_length;q.push(G.vexs[k].data);}k=Nextweight(t,k);//k不斷更新為已有的邊中序號最前的 }q.pop();} }void Print() {for(int i=2;i<=G.dingdian;i++)printf("頂點1到頂點%d的最短路徑長是:%d\n",G.vexs[i].data,G.vexs[i].length); }int main() {CreateGraph();ShortestPaths(1);Print();return 0; }

總結

以上是生活随笔為你收集整理的使用分支限界法解决单源最短路径问题。的全部內容,希望文章能夠幫你解決所遇到的問題。

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