题目意思:
在有向图中,求1到所有点的最短路之和 + 所有点到1的最短路之和。

本题要点:
1、先求1点 到其他点的单源最短路径 d[i](1 <= i <= n), 用 dijkstra 算法 和 堆实现。 求出距离的总和 sum。

2、每条路径的方向取反,再求一次 点 1 的单源路径 d1[i](1 <= i <= n), 求出距离的总和 sum1.
答案就是 sum + sum1;
这里为了避免传参,直接写了两遍 dijkstra 算法。

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int MaxN = 1000010;
int n, m, T, tot, tot1;
int head[MaxN], ver[MaxN], edge[MaxN], Next[MaxN], d[MaxN];
bool vis[MaxN];
int head1[MaxN], ver1[MaxN], edge1[MaxN], Next1[MaxN], d1[MaxN];
bool vis1[MaxN];void add(int x, int y, int z)
{ver[++tot] = y, edge[tot] = z, Next[tot] = head[x]; head[x] = tot;
}void add1(int x, int y, int z)
{ver1[++tot1] = y, edge1[tot1] = z, Next1[tot1] = head1[x]; head1[x] = tot1;
}long long dijkstra()
{memset(d, 0x3f, sizeof d);memset(vis, false, sizeof vis);d[1] = 0;priority_queue<pair<int, int> > q;q.push(make_pair(0, 1));while(q.size()){int x = q.top().second; q.pop();if(vis[x])   continue;vis[x] = true;for(int i = head[x]; i; i = Next[i]){int y = ver[i], z = edge[i];if(d[y] > d[x] + z){d[y] = d[x] + z;q.push(make_pair(-d[y], y));}}}long long ans = 0;for(int i = 1; i <= n; ++i){ans += d[i];}return ans;
}long long dijkstra1()
{memset(d1, 0x3f, sizeof d1);memset(vis1, false, sizeof vis1);d1[1] = 0;priority_queue<pair<int, int> > q;q.push(make_pair(0, 1));while(q.size()){int x = q.top().second; q.pop();if(vis1[x]) continue;vis1[x] = true;for(int i = head1[x]; i; i = Next1[i]){int y = ver1[i], z = edge1[i];if(d1[y] > d1[x] + z){d1[y] = d1[x] + z;q.push(make_pair(-d1[y], y));}}}long long ans = 0;for(int i = 1; i <= n; ++i){ans += d1[i];}return ans;
}int main()
{scanf("%d", &T);while(T--){tot = tot1 = 0;memset(head, 0, sizeof head);memset(head1, 0, sizeof head1);memset(Next, 0, sizeof Next);memset(Next1, 0, sizeof Next1);scanf("%d%d", &n, &m);for(int i = 1; i <= m; ++i){int x, y, z;scanf("%d%d%d", &x, &y, &z);add(x, y, z);add1(y, x, z);}printf("%lld\n", dijkstra() + dijkstra1());}return 0;
}/*
2
2 2
1 2 13
2 1 33
4 6
1 2 10
2 1 60
1 3 20
3 4 10
2 4 5
4 1 50
*//*
46
210
*/

POJ 1511 Invitation Cards(最短路径,dijkstra 模板题)相关推荐

  1. POJ 1511 Invitation Cards——Dijkstra优先队列优化+反向建图

    [题目描述] In the age of television, not many people attend theater performances. Antique Comedians of M ...

  2. POJ 1511 Invitation Cards(双向最短路)

    [题目链接] http://poj.org/problem?id=1511 题目意思 给n个点,m条有向边.问你从1到其他n-1各点的最短路和加上从n-1各点到1的最短路. 解题思路 因为是有向边而且 ...

  3. poj 1511 Invitation Cards

    最短路 题意:  强调是有向图 , n个点(1到n标号)m条边,求出点1到所有点的最短路之和 + 所有点到点1的最短路之和 什么?求一次最短路,然后 x 2 就是答案? 这样是错的,如果是无向图的话可 ...

  4. 【POJ - 1511】 Invitation Cards(Dijkstra + 反向建图 多源到单源最短路的处理)

    题干: In the age of television, not many people attend theater performances. Antique Comedians of Mali ...

  5. POj 3164 Command Network最小树形图 模板题 朱刘算法

    Command Network After a long lasting war on words, a war on arms finally breaks out between littleke ...

  6. Dijkstra模板题——单源最短路径(洛谷 P3371)

    题目选自洛谷P3371 这个数据类型可以将两个数据进行打包,比如 pair<int,int> 就是将两个int型进行打包. 而且使用优先队列时,优先队列会根据你打包的第一个数据进行排序. ...

  7. HDU 2544最短路dijkstra模板题

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. pku 1511 Invitation Cards

    一道好题,练习静态表(邻接矩阵的数组开不下),没写过静态表,参考http://www.cnblogs.com/cykun/archive/2011/01/19/1939542.html 写的,改用st ...

  9. 城市平乱 (dijkstra模板题)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=115 本题求单源最短路,这里有个技巧,因为源点不一,这时我们可以设置一个"超级源 ...

最新文章

  1. 机器学习中的线性回归,你理解多少?
  2. linux程序设计——运行SQL语句(第八章)
  3. NYOJ 641 摧毁网络
  4. 最新版本sublime text3注册码
  5. 记录 之 cat 和 awk gsub 的使用
  6. oracle移动硬盘盒,oracle-linux下挂载移动硬盘 NTFS类型
  7. 实验二、XSS和SQL注入
  8. 动物笼行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  9. codeforces1013E - DP
  10. 服务器关机显示正在停止服务,云服务器一直停止中
  11. 苹果mac需牢记的SSH命令
  12. paip.提升用户体验------c++ 拖曳使用总结..
  13. 《暖暖环游世界》:突破女性休闲游戏的商业化局限
  14. 腾讯云带宽价格表(包年包月/按量计费/流量价格)
  15. 如何查看电脑是否支持CUDA及支持的CUDA版本
  16. 量子力学 Schrodinger 方程的简单导出
  17. Luna承诺简化JavaScript测试
  18. 关于ie浏览器的插件IEDevToolBar 和DebugBar安装问题
  19. 拉格朗日乘子库恩塔克条件
  20. iOS开源项目周报0413

热门文章

  1. 软件测试寻找测试点的思维角度有哪些方面?
  2. UTL_HTTP read_text和read_raw应用
  3. S5PV210 GPIO 操作
  4. gaynbsp;andnbsp;lalanbsp;超短小说
  5. 分布式存储开发:Curve中的内存管理
  6. Unity 文字显示动画
  7. HTG评论The Wink Hub:在不破坏资金的情况下为您的智能家居提供大脑
  8. 思特奇2019校招笔试题
  9. 制造linux安装系统老毛桃u盘
  10. 计算机毕业设计ssm宠物领养平台2x520系统+程序+源码+lw+远程部署