最小最短路径树。

\(dis[j]==dis[i]+w(i,j)\)时,从\(w(i,j')\)和\(w(i,j)\)考虑。——从0分到100分。

  1. #include <bits/stdc++.h>
  2. const int maxn = 10000;
  3. const int maxm = 100000;
  4. using namespace std;
  5. int to[maxm * 2 + 10];
  6. int w[maxm * 2 + 10];
  7. int nex[maxm * 2 + 10];
  8. int head[maxn + 10], cnt = 0;
  9. void addEdge(int a, int b, int c)
  10. {
  11. to[cnt] = b; w[cnt] = c;
  12. nex[cnt] = head[a]; head[a] = cnt++;
  13. to[cnt] = a; w[cnt] = c;
  14. nex[cnt] = head[b]; head[b] = cnt++;
  15. }
  16. int edgeVis[maxm + 10];
  17. int dotVis[maxn + 10];
  18. int dis[maxn + 10];
  19. int edgePre[maxn + 10];
  20. void spfa()
  21. {
  22. memset(edgeVis, 0, sizeof(edgeVis));
  23. memset(dotVis, 0, sizeof(dotVis));
  24. memset(dis, 0x3f, sizeof(dis));
  25. memset(edgePre, -1, sizeof(edgePre));
  26. queue<int> q;
  27. dis[1] = 0;
  28. q.push(1);
  29. dotVis[1] = 1;
  30. while (!q.empty())
  31. {
  32. int x = q.front(); q.pop();
  33. dotVis[x] = 0;
  34. for (int i = head[x]; i != -1; i = nex[i])
  35. {
  36. int l = to[i];
  37. if (dis[l] > dis[x] + w[i])
  38. {
  39. dis[l] = dis[x] + w[i];
  40. if (edgePre[l] != -1)
  41. edgeVis[edgePre[l]] = 0;
  42. edgePre[l] = i / 2;
  43. edgeVis[edgePre[l]] = 1;
  44. if (!dotVis[l])
  45. {
  46. q.push(l);
  47. dotVis[l] = 1;
  48. }
  49. }
  50. else if (dis[l] == dis[x] + w[i])
  51. {
  52. if (w[edgePre[l] * 2] > w[i])
  53. {
  54. edgeVis[edgePre[l]] = 0;
  55. edgePre[l] = i / 2;
  56. edgeVis[edgePre[l]] = 1;
  57. }
  58. }
  59. }
  60. }
  61. }
  62. int main()
  63. {
  64. int n, m;
  65. scanf("%d%d", &n, &m);
  66. memset(head, -1, sizeof(head));
  67. for (int i = 1, a, b, c; i <= m; i++)
  68. {
  69. scanf("%d%d%d", &a, &b, &c);
  70. addEdge(a, b, c);
  71. }
  72. spfa();
  73. int ans = 0;
  74. for (int i = 0; i <= cnt - 1; i += 2)
  75. {
  76. if (edgeVis[i / 2])
  77. {
  78. ans += w[i];
  79. }
  80. }
  81. printf("%d\n", ans);
  82. return 0;
  83. }

CCF-CSP题解 201609-4 交通规划的更多相关文章

  1. CCF CSP 201609-4 交通规划

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-4 交通规划 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自 ...

  2. CCF 201609-4 交通规划

    问题描述 试题编号: 201609-4 试题名称: 交通规划 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家 ...

  3. CCF 交通规划(Dijkstra+优先队列)

    交通规划 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统. 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改造成 ...

  4. CCF CSP 201509-4 高速公路

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201509-4 高速公路 问题描述 某国有n个城市,为了使得城市间的交通更便利,该国国王打算在 ...

  5. CCF CSP 201703-3 Markdown

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...

  6. CCF CSP 201312-3 最大的矩形

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...

  7. CCF CSP 201609-3 炉石传说

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...

  8. CCF CSP 201403-3 命令行选项

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...

  9. CCF CSP 201709-4 通信网络

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...

  10. CCF CSP 201409-3 字符串匹配

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201409-3 字符串匹配 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那 ...

随机推荐

  1. x86汇编分页模式实验 --《ORANGE'S一个操作系统的实现》中 pmtest8.asm解析

    序言(废话) : 在看书的过程中发现一开始不是很能理解pmtest8的目的,以及书上说得很抽象..于是在自己阅读过源代码后,将一些自己的心得写在这里. 正文 : 讲解顺序依然按照书上贴代码的顺序来.但 ...

  2. GitHub上优秀的开源项目(转载)

    转载出处:https://github.com/Trinea/android-open-project 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.A ...

  3. js 日常正则

    手机号 /^1((3[\d])|(4[5,6,9])|(5[0-3,5-9])|(6[5-7])|(7[0-8])|(8[1-3,5-8])|(9[1,8,9]))\d{8}$/ 大写字母 /^[A- ...

  4. IDM下载工具使用

    平时网上找资料,找视频,难免都需要下载到本地,奈何下载速度都一般,最近发现一款多线程下载工具,堪称无敌!!

  5. Web渗透测试流程

    什么是渗透测试? 渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法 ...

  6. 02 jQuery中的事件、动画、复合函数

    jQuery中的事件 在JavaScript中,常用的基础事件有鼠标事件.键盘事件.window事件.表单事件.事件绑定和处理函数的语法格式如下 语法q 事件名 = "函数名()" ...

  7. P1055 ISBN号码

    题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字.11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位 ...

  8. P1046 陶陶摘苹果

    题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出1010个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个3030厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 现在 ...

  9. javaScript中的indexOf使用方法

    JavaScript中的indexOf使用方法 概述 indexOf大小写敏感,其中的O要大写 对于字符串而言 indexOf返回字符串第一次出现的位置,若没有出现返回-1 1 var str = & ...

  10. Mysql多表关系

    mysql多表关系 多表关系是关系型数据库特有的 三种关系 一对一关系 一对多关系 多对多关系 总结 一对一 例子:用户和用户信息 外键设置在用户上,外键字段唯一非空 添加 无级联:先增加被关联表记录 ...