hdu 3790 最短路径问题 迪杰斯特拉
来源:互联网 发布:唾液可以杀菌消炎 知乎 编辑:程序博客网 时间:2024/04/28 11:47
先选长度小的,长度相等,选花费小的,注意细节即可。
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3790
#include <stdio.h>#include <string.h>#include <stdlib.h>const int MAXN=1010;const int INF=0x3f3f3f3f;bool vis[MAXN];int pre[MAXN];int cost[MAXN][MAXN];int money[MAXN][MAXN];int lowcost[MAXN];int lowmoney[MAXN];void Init(){ memset(cost,0x3f,sizeof(cost)); memset(money,0x3f,sizeof(money)); memset(lowcost,0x3f,sizeof(lowcost)); memset(lowmoney,0x3f,sizeof(lowmoney)); memset(vis,0,sizeof(vis)); memset(pre,-1,sizeof(pre));}void Dijkstra(int n,int beg){ lowcost[beg] = 0; lowmoney[beg] = 0; for(int j=0;j<n;j++){ int k=-1; int Min=INF; int Minmoney = INF; for(int i=0;i<n;i++){ if(!vis[i]&&lowcost[i]<Min){ Min=lowcost[i]; Minmoney = lowmoney[i]; k=i; } else if(!vis[i]&&lowcost[i]==Min&&lowmoney[i]<Minmoney){ Minmoney = lowmoney[i]; Min = lowcost[i]; k = i; } } if(k==-1)break; vis[k]=true; for(int i=0;i<n;i++){ if(!vis[i]&&lowcost[k]+cost[k][i]<lowcost[i]){ lowcost[i]=lowcost[k]+cost[k][i]; lowmoney[i] = lowmoney[k] + money[k][i]; pre[i]=k; } else if(!vis[i]&&lowcost[k]+cost[k][i]==lowcost[i]&& lowmoney[k] + money[k][i]<lowmoney[i]){ lowcost[i]=lowcost[k]+cost[k][i]; lowmoney[i] = lowmoney[k] + money[k][i]; pre[i]=k; } } }}void Input(){ int n,m; while(scanf("%d %d",&n,&m),n+m){ int tempa,tempb,tempr,tempm; Init(); for(int i=0;i<m;i++){ scanf("%d %d %d %d",&tempa,&tempb,&tempr,&tempm); tempa--;tempb--; if(cost[tempa][tempb]>tempr){ cost[tempa][tempb] = tempr; cost[tempb][tempa] = tempr; money[tempa][tempb] = tempm; money[tempb][tempa] = tempm; } else if(cost[tempa][tempb]==tempr&&money[tempa][tempb]>tempm){ money[tempa][tempb] = tempm; money[tempb][tempa] = tempm; } } int s,t; scanf("%d %d",&s,&t); Dijkstra(n,s-1); printf("%d %d\n",lowcost[t-1],lowmoney[t-1]); }}void File(){ freopen("a.in","r",stdin); freopen("a.out","w",stdout);}int main(void){// File(); Input(); return 0;}
0 0
- hdu 3790 最短路径问题 迪杰斯特拉
- 【最短路径-Dis】hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- HDU-3790-最短路径问题
- HDU 3790 最短路径问题
- hdu 3790 最短路径问题
- Hdu 3790 最短路径问题
- HDU 3790 最短路径问题
- HDU 3790 最短路径问题
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- 最短路径问题 hdu 3790
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- hdu--最短路径问题--3790
- HDU 3790 最短路径问题
- hdu 3790 最短路径问题
- string
- 骨牌铺方格
- 修改只读对象的示例代码
- hibernate关联问题, org.hibernate.TransientObjectException: object references an unsaved transient instan
- Ubuntu目录结构及说明
- hdu 3790 最短路径问题 迪杰斯特拉
- 大数求和
- Android利用convertView优化ListView性能
- 吴超-----solr添加中文IK分词器,以及配置自定义词库
- js去除字符串前后空格
- windows中的QT项目移植到linux下出现中文乱码问题
- Android 模拟器genymotion安装,eclipse 插件
- Linux 添加证书
- js去字符串前后空格