题意 : 给出 P 个顶点以及 Q 条有向边,求第一个点到其他各点距离之和+其他各点到第一个点的距离之和的最小值

分析 : 不难看出 min( 第一个点到其他各点距离之和+其他各点到第一个点的距离之和 ) = min( 第一个点到其他各点距离之和) + min( 其他各点到第一个点的距离之和 ),前者较为简单,建好图后直接跑一遍最短路即得,关键在于后者怎么方便的求出来。这里利用到了一个逆向思维,如果将所有的有向边反过来,那么就能求出其他点到源点的最短路了,那么只要存储两种边,一个正向边(即题目所给)然后存一组反向边,两种建出来的图各自去跑一遍最短路最后相加即为结果

  1. #include<bits/stdc++.h>
  2. #include<ext/pb_ds/priority_queue.hpp>
  3. using namespace std;
  4. using namespace __gnu_pbds;
  5. ;
  6. const int INF = 0x3f3f3f3f;
  7. typedef pair<int, int> pii;
  8. struct EDGE{ int v, nxt, w; };
  9. EDGE Edge[][maxn];
  10. ][maxn];
  11.  
  12. inline void init()
  13. {
  14. ; i<=N; i++)
  15. Head[][i] = Head[][i] = -;
  16. cnt = ;
  17. }
  18.  
  19. inline void AddEdge(int from, int to, int weight, int flag)
  20. {
  21. Edge[flag][cnt].v = to;
  22. Edge[flag][cnt].nxt = Head[flag][from];
  23. Edge[flag][cnt].w = weight;
  24. Head[flag][from] = cnt++;
  25. }
  26.  
  27. int Dis[maxn];
  28.  
  29. int Dijkstra(int flag)
  30. {
  31. ; i<=N; i++)
  32. Dis[i] = INF;
  33. Dis[] = ;
  34. __gnu_pbds::priority_queue<pii,greater<pii>,pairing_heap_tag > Heap;
  35. Heap.push(make_pair(, ));
  36. pii Top;
  37. while(!Heap.empty()){
  38. Top = Heap.top(); Heap.pop();
  39. if(Dis[Top.second] != Top.first) continue;
  40. ; i=Edge[flag][i].nxt){
  41. int Eiv = Edge[flag][i].v;
  42. if(Dis[Eiv] > Dis[Top.second] + Edge[flag][i].w){
  43. Dis[Eiv] = Dis[Top.second] + Edge[flag][i].w;
  44. Heap.push(make_pair(Dis[Eiv], Eiv));
  45. }
  46. }
  47. }
  48. ;
  49. ; i<=N; i++)
  50. ret += Dis[i];
  51. return ret;
  52. }
  53.  
  54. int main(void)
  55. {
  56. int nCase;
  57. scanf("%d", &nCase);
  58. while(nCase--){
  59. scanf("%d %d", &N, &M);
  60. init();
  61. int from, to, weight;
  62. while(M--){
  63. scanf("%d %d %d", &from, &to, &weight);
  64. AddEdge();
  65. AddEdge(to, );
  66. }
  67. ;
  68. ans += Dijkstra();
  69. ans += Dijkstra();
  70. printf("%d\n", ans);
  71. }
  72. ;
  73. }

POJ 1511 Invitation Cards ( 双向单源最短路 || 最小来回花费 )的更多相关文章

  1. POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 16178   Accepted: 526 ...

  2. POJ-1511 Invitation Cards (单源最短路+逆向)

    <题目链接> 题目大意: 有向图,求从起点1到每个点的最短路然后再回到起点1的最短路之和. 解题分析: 在求每个点到1点的最短路径时,如果仅仅只是遍历每个点,对它们每一个都进行一次最短路算 ...

  3. POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)

    POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...

  4. poj 1511 Invitation Cards (最短路)

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 33435   Accepted: 111 ...

  5. Invitation Cards POJ - 1511 (双向单源最短路)

    In the age of television, not many people attend theater performances. Antique Comedians of Malidine ...

  6. POJ-1511 Invitation Cards (双向单源最短路)

    Description In the age of television, not many people attend theater performances. Antique Comedians ...

  7. [POJ] 1511 Invitation Cards

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 18198   Accepted: 596 ...

  8. Poj 1511 Invitation Cards(spfa)

    Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 24460 Accepted: 8091 De ...

  9. SPFA算法(2) POJ 1511 Invitation Cards

    原题: Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 31230   Accepted: ...

随机推荐

  1. JSPDF 原理

    Jspdf是一个将html内容生成pdf文件的库,原理是对输入浏览器的文字或二进制图片进行base64编码转换,以pdf中应有的形式组织,最终以data uri scheme, data:applic ...

  2. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_4_缓冲流的效率测试_复制文件

    把之前文件复制的代码复制到这里 一个字节一个字节的读取,复制文件 byte数组的形式 缓冲流测试 数组缓冲

  3. Vuex模块:不开启命名空间

    模块不开启命名空间时,会共享全局命名空间. { state: { 模块1: "局部状态1", 模块2: "局部状态2" }, getters: { getter ...

  4. [Markdown] 03 进阶语法 第一弹

    目录 1. YMAL 题头 2. 缩写 3. 强调 4. 自定义 <div> 标签 5. <cite> 标签 5. <code> 与 <br> 标签 6 ...

  5. 不定参数(rest 参数 ...)

    不定参数 如何实现不定参数 使用过 underscore.js 的人,肯定都使用过以下几个方法: _.without(array, *values) //返回一个删除所有values值后的array副 ...

  6. 谈一下你对 uWSGI 和 nginx 的理解??

    1.uWSGI 是一个 Web 服务器,它实现了 WSGI 协议.uwsgi.http 等协议.Nginx 中HttpUwsgiModule 的作用是与 uWSGI 服务器进行交换.WSGI 是一种 ...

  7. Angular ngTemplateOutlet

    虽然我们可以通过使用 ViewContainerRef 将 ElementRef创建的视图插入指定的位置,但是仍然希望有某中快捷的方式帮我们实现. ngTemplateOutlet与ngCompone ...

  8. QT中使用Event Filter监听button事件,Release后button不见

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/27201043 问题RT,在程序中我使用 ...

  9. WinForm的RadioButton使用小技巧

    http://www.cnblogs.com/sjrhero/articles/1883155.html 当多个RadioButton同在一个容器里面的时候,多半的操作都是要得到其中一个的值这个时候我 ...

  10. 14、前端知识点--Vue生命周期浅析

    vue生命周期 每个Vue实例或组件从创建到显示再到废弃的过程就是vue的生命周期.很多时候我们希望能在这个过程中执行一些操作,于是就有了生命周期钩子. 生命周期钩子函数允许我们在实例不同阶段执行各种 ...