旅游规划
来源:互联网 发布:如何代理网络飞机票 编辑:程序博客网 时间:2024/04/27 21:30
旅游规划
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std; #define INF 0xfffffffint vis[1010];//标记数组 int n,m,s,d; struct node{ int l,c;}pri[1010][1010],discost[1010];void dijkstra(int s){ memset(vis,0,sizeof(vis)); vis[s]=1; for(int i=0;i<n;i++) { discost[i].l=pri[s][i].l; discost[i].c=pri[s][i].c; } for(int i=0;i<n;i++) { int Ml=INF,Mc=INF,k=-1; for(int j=0;j<n;j++) { if(!vis[j]&&discost[j].l<=Ml) { if((discost[j].l==Ml&&discost[j].c<Mc)||discost[j].l<Ml) { Ml=discost[j].l; Mc=discost[j].c; k=j; } } } if(k==-1) return; vis[k]=1; for(int j=0;j<n;j++) if(!vis[j]&&discost[j].l>=discost[k].l+pri[k][j].l) { if( (discost[j].l>discost[k].l+pri[k][j].l) || (discost[j].l==discost[k].l+pri[k][j].l && discost[j].c>discost[k].c+pri[k][j].c)) { discost[j].l=discost[k].l+pri[k][j].l; discost[j].c=discost[k].c+pri[k][j].c; } } }} int main() { scanf("%d%d%d%d",&n,&m,&s,&d); for(int i=0;i<n;i++) for(int j=0;j<n;j++) { pri[i][j].l=i==j?0:INF; pri[i][j].c=i==j?0:INF; } for(int i=1;i<=m;i++) { int a,b,l,c; scanf("%d%d%d%d",&a,&b,&l,&c); if(pri[a][b].l>l) { pri[a][b].l=pri[b][a].l=l; pri[a][b].c=pri[b][a].c=c; } } dijkstra(s); printf("%d %d\n",discost[d].l,discost[d].c); return 0; }
阅读全文
0 0
- 旅游规划
- 旅游规划
- 旅游规划
- PTA--旅游规划--SPFA
- pta-旅游规划
- 5-3 旅游规划
- 5-9 旅游规划
- 旅游规划-Java
- 浙大题--旅游规划
- 旅游预算 动态规划
- vijos1476 旅游规划-动态规划
- VIJOS P1476 旅游规划(csapc)
- 06-图5. 旅游规划
- 07-图6 旅游规划
- 07-图6 旅游规划
- 07-图6 旅游规划
- 07-图6 旅游规划
- PTA-旅游规划(bfs版本)
- Linux shell编程学习笔记(六) 正则表达式
- 自动添加需要编译的源文件Android.mk模板
- 我的实习之路
- 秒杀系统性能测试和优化
- ReactNative——仿微信toast提示
- 旅游规划
- -1用二进制怎么表示 按默认排序 | 按时间排序 最佳回答 2007-03-20huguquan | 五级 原码是10000001 反码是11111110 补码是11111111 补码是计算机的一般表
- c++ 声明 定义 初始化
- SIM卡基本概念
- Android 蓝牙开发基础操作
- nginx配置访问指定图片路径方法
- PAT乙级真题及训练集 1006. 换个格式输出整数 (15)
- [Android]一台手机同时安装测试包和正式包
- 常用 Git 命令清单 6个命令就可以