最短路

题意:  强调是有向图 , n个点(1到n标号)m条边,求出点1到所有点的最短路之和 + 所有点到点1的最短路之和

什么?求一次最短路,然后 x 2 就是答案? 这样是错的,如果是无向图的话可以这样,因为可以逆回去走。但是有向图显然不是,点1到点a的最短路,和点a到点1的最短路是完全不同的,值不同走过的路径也不同.要求点1到所有点的最短路,直接运行一次最短路即可。但是要求所有点到点1的最短路,难道要对所有点运行一次最短路吗?一看点数就可以否定这个想法。可以这样想,如果点a到点1存在最短路,那么把这条路径的边全部取反,就是点1到点a的最短路了。所有在求了第1次最短路后,将 整个图的边取反,再求一次点1到所有点的最短路就行了,可以知道边都取反后,第一次走过的路径都不会再走到(都取反了),而从点a可能到点1的可能的边都成了点1到点a的可能的边

代码用了spfa算法,用queue和stack来辅助对时间的影响不大,但是stack稍快一点(只从上次后我发现其实stack都比queue快,一般情况下,更不用题特殊情况了)

另外用dij+heap也行,朴素的dij应该是超时的,虽然没写

#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
using namespace std;
#define N 1000010
#define INF 0x3f3f3f3ftypedef long long ll;
ll d[N];
int n,tot;
int head[N];
bool ins[N];
struct edge
{int u,v,w,next;
}e[N],tt[N];void add(int u ,int v ,int w , int k)
{e[k].u = u;e[k].v = v;e[k].w = w;e[k].next = head[u];head[u] = k;
}ll spfa_stack()
{stack<int>sta;memset(d,0x3f,sizeof(d));memset(ins,false,sizeof(ins));while(!sta.empty()) sta.pop();d[1] = 0;ins[1] = true;sta.push(1);while(!sta.empty()){int u = sta.top();sta.pop();ins[u] = false;for(int k=head[u]; k!=-1; k=e[k].next){int v =e[k].v;int w = e[k].w;if( d[u] + w < d[v] ){d[v] = d[u] + w;if(!ins[v]){ins[v] = true;sta.push(v);}}}}ll res = 0;for(int i=1; i<=n ; i++)res += d[i];return res;
}int main()
{int T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&tot);memset(head,-1,sizeof(head));for(int i=0; i<tot; i++){int u,v,w;scanf("%d%d%d",&u,&v,&w);tt[i].u = u; tt[i].v = v; tt[i].w = w;add(u,v,w,i);}ll suma = spfa_stack();memset(head,-1,sizeof(head));for(int i=0; i<tot; i++)add(tt[i].v , tt[i].u , tt[i].w , i);ll sumb = spfa_stack();printf("%lld\n",suma+sumb);}return 0;
}

转载于:https://www.cnblogs.com/scau20110726/archive/2013/05/04/3060299.html

poj 1511 Invitation Cards相关推荐

  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(最短路径,dijkstra 模板题)

    题目意思: 在有向图中,求1到所有点的最短路之和 + 所有点到1的最短路之和. 本题要点: 1.先求1点 到其他点的单源最短路径 d[i](1 <= i <= n), 用 dijkstra ...

  4. pku 1511 Invitation Cards

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

  5. Invitation Cards——正反最短路

    poj 1511: Invitation Cards 题意:点1到其他点的最短距离+其他点到点1的最短距离 的总和. 1.双向建图 正向建图是1到其他点的距离,反向建图则是其他点到1的距离. 2.数据 ...

  6. J - Invitation Cards POJ - 1511

    J - Invitation Cards POJ - 1511 题意: 共有 n 个站点,n 个志愿者从1 出发,分别到达不同的站点,晚上全部回到 1 ,求他们总的最小花费是多少? 思路: 首先想到从 ...

  7. Invitation Cards POJ - 1511【最短路】

    Invitation Cards POJ - 1511 题目 思路:建两张图,一张正向一张反向,先在正向图里求一遍一号点到所有点的距离,再在反向图里求一遍,反向图里一号点到所有点的距离的意思是所有点到 ...

  8. Invitation Cards POJ - 1511 SPFA(dijkstra+反向建图+邻接表(下标过大)+输入输出用stdio(iostream超时))

    题目大意: 有编号1-P的站点, 有Q条公交车路线,公交车路线只从一个起点站直接 到达终点站,是单向的,每条路线有它自己的车费.有P个人早上从1出发 ,他们要到达每一个公交站点, 然后到了晚上再返回点 ...

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

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

最新文章

  1. java开发事故如何处理_记一次缓存事故
  2. 使用dwebsocket在Django中使用Websocket
  3. 脉位调制解调 matlab,通信原理与matlab仿真v2 第五章 DBPSK调制解调器(1)
  4. oracle consistent gets,Oracle buffer cache理解之七——统计信息!
  5. python导入第三方库dlib报错解决
  6. 微波烹调,营养损失多or少?
  7. 群晖transmission 下载失败 权限设置 permission denied
  8. origin作功率谱图
  9. dns服务器功能作用,DNS服务的用途介绍
  10. MyBatis连接池的实现原理分析
  11. html显示空间图片,qq空间显示不出来 为什么QQ空间有些图片显示不了
  12. 你来分我先选 原则
  13. “爱心助农”成绩单公布,淘宝何以成为最大舞台?
  14. 【202209秋招软开银行面试C++】
  15. 详解opencv的HOG描述子维度数目的计算原理
  16. 迪士尼机器人芭蕾舞_迪士尼“跳跳虎”机器人来了!
  17. SVN服务端和客户端搭建教程
  18. SharePoint Portal Server 2007 文档管理和用户管理的总结
  19. 抽象工厂模式-Abstract Factory Pattern
  20. 论文翻译:Text-based Image Editing for Food Images with CLIP

热门文章

  1. 如何实现响应式布局?
  2. PHP 登录DEMO
  3. (转)open gl 实例 demo ---vs2005 环境
  4. 【Basking Rootwalla】真正理解setup time/hold time(二)
  5. Windows下安装配置ant
  6. jupyter新建文件_Jupyter渲染网页的3种方式
  7. ES基础概念和集群概念
  8. VUE中出现 Cannot read property ‘length‘ of undefined 的错误
  9. 计算机vf的讲解,计算机二级vf重点知识讲解.doc
  10. java hashcode 多少位_hash-为什么XOR通常在Java hashCode()中使用,而很少使用按位运算符?...