【BUAA 1247】 最短路径问题
来源:互联网 发布:mac口红砖红色色号 编辑:程序博客网 时间:2024/06/15 01:57
【BUAA 1247】 最短路径问题
最短路径
没注明双向 傻傻的当成单向做的。。。。审题!!!
Dijkstra 模板题
代码如下
#include <bits/stdc++.h>#define INF 0x3f3f3f3fusing namespace std;typedef struct Edge{ int d,p,v,next;}Edge;Edge eg[111111];int head[1111],tp;int dis[1111],cst[1111];bool vis[1111];int n,st,en;void Dijkstra(){ memset(dis,INF,sizeof(dis)); memset(cst,INF,sizeof(cst)); memset(vis,0,sizeof(vis)); int i,u,v,d,p,j; dis[st] = 0; cst[st] = 0; int w,pp,m; for(i = 0; i < n; ++i) { pp = -1; w = m = INF; for(j = 1; j <= n; ++j) { if(!vis[j] && (w > dis[j] || (w == dis[j] && m > cst[j]))) { pp = j; w = dis[j]; m = cst[j]; } } if(pp == en) return; vis[pp] = 1; for(j = head[pp]; j != -1; j = eg[j].next) { v = eg[j].v; d = eg[j].d; p = eg[j].p; if(!vis[v] && (dis[v] > dis[pp] + d || (dis[v] == dis[pp] + d && cst[v] > cst[pp] + p))) { dis[v] = dis[pp] + d; cst[v] = cst[pp] + p; } } }}void Add(int u,int v,int d,int p){ eg[tp].v = v; eg[tp].d = d; eg[tp].p = p; eg[tp].next = head[u]; head[u] = tp++;}int main(){ int m,i,u,v,d,p; while(~scanf("%d %d",&n,&m) && n) { tp = 0; memset(head,-1,sizeof(head)); for(i = 0; i < m; ++i) { scanf("%d %d %d %d",&u,&v,&d,&p); Add(u,v,d,p); Add(v,u,d,p); } scanf("%d %d",&st,&en); Dijkstra(); printf("%d %d\n",dis[en],cst[en]); } return 0;}
0 0
- 【BUAA 1247】 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- Hive文件存储格式的测试比较
- [leetcode] Rotate Image
- Android中WebView中拦截所有请求并替换URL
- 【Unity3d】如何解决Unity3d在引用外部插件时报DLLNotFoundException的问题
- android view(image,imageButton,...)的旋转
- 【BUAA 1247】 最短路径问题
- scala进阶:Future的理解及使用
- 数据库学习之--Oracle 架构与MySQL架构对比
- 第四次作业:《国际贸易学》—关税壁垒措施
- linux程序设计——MySQL管理(第八章)
- Hadoop集群(第3期)_VSFTP安装配置
- Android ImageView以及子类
- Esper入门简介:二 个人对它的理解
- 毕业课题之----HOG+SVM相关函数的解释