给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。

Input输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。 
(1<n<=1000, 0<m<100000, s != t)Output输出 一行有两个数, 最短距离及其花费。Sample Input

3 2
1 2 5 6
2 3 4 5
1 3
0 0

Sample Output

9 11

思路:最短路问题,Djikstra即可,注意读入可能有重复边,需要判断一下,代码如下:
const int maxm = ;
const int INF = 0x7fffffff; int N, M, Start, End, G[maxm][maxm], len[maxm][maxm], vis[maxm], cost[maxm], steps[maxm]; struct Node {
int u, sum, step;
Node(int _u, int _sum, int _step) : u(_u), sum(_sum), step(_step){} bool operator<(const Node &a) const {
return a.sum < sum || (a.sum == sum && a.step < step);
}
}; void init() {
for (int i = ; i <= N; ++i) {
cost[i] = steps[i] = INF;
for (int j = ; j <= N; ++j)
G[i][j] = G[j][i] = len[i][j] = len[j][i] = INF;
}
memset(vis, , sizeof(vis));
} int main() {
while(scanf("%d%d",&N,&M) && N + M) {
init();
for (int i = ; i < M; ++i) {
int t1, t2, t3, t4;
scanf("%d%d%d%d", &t1, &t2, &t3, &t4);
if(G[t1][t2] > t3 || (G[t1][t2] == t3 && len[t1][t2] > t4)) {
G[t1][t2] = G[t2][t1] = t3;
len[t1][t2] = len[t2][t1] = t4;
}
}
scanf("%d%d", &Start, &End);
priority_queue<Node> q;
q.push(Node(Start, , ));
cost[Start] = steps[Start] = ;
while(!q.empty()) {
Node p = q.top();
q.pop();
if(vis[p.u]++)
continue;
for (int i = ; i <= N; ++i) {
if(G[p.u][i] != INF) {
if(cost[i] > cost[p.u] + G[p.u][i] || (cost[i] == cost[p.u] + G[p.u][i]
&& steps[i] > steps[p.u] + len[p.u][i])) {
cost[i] = cost[p.u] + G[p.u][i];
steps[i] = steps[p.u] + len[p.u][i];
q.push(Node(i, cost[i], steps[i]));
}
}
}
}
printf("%d %d\n", cost[End], steps[End]);
}
return ;
}
												

最新文章

  1. C#网络编程数据传输中封装数据帧头的方法
  2. ASP.NET Razor - html中使用if else
  3. Unity导出的Xcode工程目录
  4. Sass-也许你想和CSS玩耍起来(上篇)
  5. python学习之迭代器与生成器
  6. WC总结
  7. STL的erase()陷阱-迭代器失效总结
  8. sqlzoo.net刷题2
  9. HDU 1233 还是畅通工程(最小生成树,prim)
  10. C#多线程的介绍(园子里比较全的一篇)
  11. Vijos1404 遭遇战 最短路,dijkstra,堆
  12. Axure RP 8.0正式版下载地址 安装和汉化说明
  13. lr11 录制脚本时候,无法自动启动ie,查了网上很多方法都未解决?
  14. php面试题汇总二(基础篇附答案)
  15. Spring 内部注入bean
  16. MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解
  17. day9.初始函数练习题
  18. jav实验二
  19. HDU4858 项目管理 其他
  20. 猫眼电影爬取(二):requests+beautifulsoup,并将数据存储到mysql数据库

热门文章

  1. 24 JavaScript对象访问器&amp;JavaScript对象构造器
  2. Leading dimension
  3. leetcode 0215
  4. From scratch 资源
  5. Update(Stage4):spark_rdd算子:第2节 RDD_action算子_分区_缓存:缓存、Checkpoint
  6. 解决sublime不能安装packages的问题
  7. stm32CubeMx lwip + freeRTOS
  8. Centos7618安装后常见操作
  9. Java 笔试题
  10. Trie学习总结