博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201609-4交通规划 不知道错哪了
阅读量:7211 次
发布时间:2019-06-29

本文共 2673 字,大约阅读时间需要 8 分钟。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 int ll[1001][1001]; 8 struct node 9 {10 int per;11 int sumlen;12 bool vis;13 node() :per(0), sumlen(0),vis(0) {};14 };15 node dd[1001];16 int dijikstra(int s,int n)17 {18 int i,sum = 0,j, min,count=0;19 while (count < n-1)20 {21 min = 1 << 30;22 dd[s].vis = 1;//s为每次可能替换成的前驱23 for (i = 1; i <= n; i++)24 {25 if (ll[s][i]>0&& !dd[i].vis)//次节点的前驱可修改26 {27 if (!dd[i].per)//没有前驱28 {29 dd[i].per = s;30 dd[i].sumlen += ll[s][i]+dd[s].sumlen;31 }32 else//已有前驱 判断是否变动33 {34 if (dd[i].sumlen > dd[s].sumlen + ll[i][s])35 {36 dd[i].per = s;37 dd[i].sumlen = dd[s].sumlen + ll[i][s];38 }39 else if (dd[i].sumlen == dd[s].sumlen + ll[i][s])//注意我们要求的是最短公路40 {41 if (ll[i][dd[i].per] > ll[i][s])42 {43 dd[i].per = s;44 dd[i].sumlen = dd[s].sumlen + ll[i][s];45 }46 }47 }48 }49 if (!dd[i].vis&&dd[i].sumlen&&min >=dd[i].sumlen)//min记录每次最短公路50 {51 if (min == dd[i].sumlen)52 {53 if (ll[dd[j].per][j] > ll[dd[i].per][i])54 {55 min = dd[i].sumlen;56 j = i;57 }58 }59 else60 {61 min = dd[i].sumlen;62 j = i;63 }64 }65 }66 s = j;67 sum += ll[dd[j].per][j];68 count++;69 }70 return sum;71 }72 int main()73 {74 memset(ll,-1,sizeof(ll));75 int n, m; cin >> n >> m;76 //n = 4; m = 5;77 int i, a, b, c;78 for (i = 1; i <= n; i++)79 ll[i][i] = 0;80 for (i = 0; i < m; i++)81 {82 cin >> a >> b >> c;83 ll[a][b] = ll[b][a] = c;84 }85 /*ll[1][2] = ll[2][1] = 4;86 ll[1][3] = ll[3][1] = 5;87 ll[2][3] = ll[3][2] = 2;88 ll[2][4] = ll[4][2] = 3;89 ll[3][4] = ll[4][3] = 2;*/90 cout << dijikstra(1, n) << endl;91 return 0;92 }

 

转载于:https://www.cnblogs.com/yuelien/p/6511573.html

你可能感兴趣的文章
通过JS控制各种元素的点击事件的【时间间隔】,特别适合【发表评论】功能...
查看>>
话说TP框架里的Vendor这目录是干什么用的啊?类库扩展thinkphp3.1版本
查看>>
Android SDK与API版本的对应关系
查看>>
Elasticsearch yellow 意味着主分片可用,副本不可用
查看>>
Android开发实现QQ三方登录 标签: android开发qq三方登录
查看>>
2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】
查看>>
【Linux】使用xshell登陆时密码框为灰色,无法输入密码
查看>>
gradle平级项目引用
查看>>
win10应用开发——如何判断应用是在手机上运行还是电脑上运行
查看>>
一位10年程序员生涯的总结与经验忠告分享
查看>>
点击照片上传照片一
查看>>
[SF] Symfony 组件 BrowserKit 原理
查看>>
关于修改linux hostname的问题,尤其是redhat 7修改hostname的方式
查看>>
nginx服务器的负载均衡和动静分离(未完)
查看>>
php 处理ftp常用操作与方法
查看>>
nutz 结合QueryResult,Record 自定义分页查询,不构建pojo 整合
查看>>
Mac下安装Pyqt
查看>>
m-orchastration system
查看>>
Golang 微框架 Gin 简介
查看>>
redis 中 set 和 hset 有什么不同,什么时候使用 hset 什么时候使用set?
查看>>