有向图 源点为1 求源点到其他各点的最短距离之和 再在其他点到源点的最短距离之和 再加起来 多源点一终点 只要反向构图就行了

Sample Input

2 //T
2 2 //结点数 边数
1 2 13 //u v w
2 1 33
4 6
1 2 10
2 1 60
1 3 20
3 4 10
2 4 5
4 1 50
Sample Output

46
210

堆优化:  跑了6S...

  1. # include <iostream>
  2. # include <cstdio>
  3. # include <cstring>
  4. # include <algorithm>
  5. # include <cmath>
  6. # include <queue>
  7. # define LL long long
  8. using namespace std ;
  9.  
  10. const int INF=0x3f3f3f3f;
  11. const int MAXN=;
  12. struct qnode
  13. {
  14. int v;
  15. int c;
  16. qnode(int _v=,int _c=):v(_v),c(_c){}
  17. bool operator <(const qnode &r)const
  18. {
  19. return c>r.c;
  20. }
  21. };
  22. struct Edge
  23. {
  24. int v,cost;
  25. Edge(int _v=,int _cost=):v(_v),cost(_cost){}
  26. };
  27. vector<Edge>E[MAXN];
  28. bool vis[MAXN];
  29. int dist[MAXN];
  30. int u[MAXN] , v[MAXN] , w[MAXN] ;
  31. int n ;
  32. void Dijkstra(int start)//点的编号从1开始
  33. {
  34. memset(vis,false,sizeof(vis));
  35. for(int i=;i<=n;i++)dist[i]=INF;
  36. priority_queue<qnode>que;
  37. while(!que.empty())que.pop();
  38. dist[start]=;
  39. que.push(qnode(start,));
  40. qnode tmp;
  41. while(!que.empty())
  42. {
  43. tmp=que.top();
  44. que.pop();
  45. int u=tmp.v;
  46. if(vis[u])continue;
  47. vis[u]=true;
  48. for(int i=;i<E[u].size();i++)
  49. {
  50. int v=E[tmp.v][i].v;
  51. int cost=E[u][i].cost;
  52. if(!vis[v]&&dist[v]>dist[u]+cost)
  53. {
  54. dist[v]=dist[u]+cost;
  55. que.push(qnode(v,dist[v]));
  56. }
  57. }
  58. }
  59. }
  60. void addedge(int u,int v,int w)
  61. {
  62. E[u].push_back(Edge(v,w));
  63. }
  64.  
  65. int main ()
  66. {
  67. // freopen("in.txt","r",stdin) ;
  68. int m ;
  69. int T ;
  70. scanf("%d" , &T) ;
  71. while (T--)
  72. {
  73. scanf("%d %d" , &n , &m) ;
  74. LL ans = ;
  75. int i , j ;
  76. for(i=;i<=m;i++)
  77. scanf("%d%d%d" , &u[i] , &v[i] , &w[i]) ;
  78.  
  79. for(i=;i<=n;i++)
  80. E[i].clear();
  81. for(i=;i<=m;i++)
  82. addedge(u[i],v[i],w[i]) ;
  83. Dijkstra() ;
  84. for(i=;i<=n;i++)
  85. ans += dist[i] ;
  86.  
  87. for(i=;i<=n;i++)
  88. E[i].clear();
  89. for(i=;i<=m;i++)
  90. addedge(v[i],u[i],w[i]) ;
  91. Dijkstra() ;
  92. for(i=;i<=n;i++)
  93. ans += dist[i] ;
  94.  
  95. cout<<ans<<endl ;
  96.  
  97. }
  98.  
  99. return ;
  100. }

poj 1511 正向 反向 构两个图的更多相关文章

  1. POJ 1511 【heap+dij】

    题意: t组样例. 每组有n个节点,有m条单向边. 有m组输入,每组a b c 表示从a到b的单向边的权值是c. 求解,从编号为1的节点出发,有n-1个人,要求他们分别到达编号从2到n的节点再返回,所 ...

  2. DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards

    题目传送门 1 2 题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程 分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路. PO ...

  3. POJ-1511 Invitation Cards---Dijkstra+队列优化+前向星正向反向存图

    题目链接: https://vjudge.net/problem/POJ-1511 题目大意: 给定节点数n,和边数m,边是单向边. 问从1节点出发到2,3,...n 这些节点路程和从从这些节点回来到 ...

  4. poj 1511(SPFA+邻接表)

    题目链接:http://poj.org/problem?id=1511 思路:题目意思很简单就是要求源点到各点的最短路之和,然后再求各点到源点的最短路之和,其实就是建两个图就ok了,其中一个建反图.1 ...

  5. 【05】Nginx:TCP / 正向 / 反向代理 / 负载均衡

    写在前面的话 在我们日常的工作中,不可能所有的服务都是简单的 HTML 静态网页,nginx 作为轻量级的 WEB 服务器,其实我们将它用于更多的地方还是作为我们网站的入口.不管你是后端接口,还是前端 ...

  6. <正向/反向>最大匹配算法(Java)

    算法描述(正向): 给定最大词长n,待分词文本str,指针f=0,词典dic文档 1 取子串sub=str(f,f+n) 2 如果(遍历dic,有匹配sub) f++; 3 否则 n--; 4 注意: ...

  7. HDU 1535 Invitation Cards (POJ 1511)

    两次SPFA. 求 来 和 回 的最短路之和. 用Dijkstra+邻接矩阵确实好写+方便交换.可是这个有1000000个点.矩阵开不了. d1[]为 1~N 的最短路. 将全部边的 邻点 交换. d ...

  8. 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 / ...

  9. 使用netcat的正向 / 反向shell

    reverse shell bind shell reverse shell描述图: 在此示例中,目标使用端口4444反向连接攻击主机.-e选项将Bash shell发回攻击主机.请注意,我们也可以在 ...

随机推荐

  1. java查看本机hostName可代表的ip列表【转】

    java查看本机hostName可代表的ip列表 import java.net.InetAddress; public class ent { public static void main(Str ...

  2. 运用Zabbix实现内网服务器状态及局域网状况监控(4) —— Zabbix客户端安装

    1.  创建用户 [root@zabbix ~]# groupadd zabbix [root@zabbix ~]# useradd -g zabbix zabbix 2. 安装zabbix_3.2 ...

  3. 运用Zabbix实现内网服务器状态及局域网状况监控(2) —— 环境配置

    一.基本要求 Zabbix支持如下操作系统: LinuxIBM AIXFreeBSDNetBSDOpenBSDHP-UXMac OS XSolarisWindows: 2000, Server 200 ...

  4. Spring RedisTemplate操作-注解缓存操作(11)

    @Service @CacheConfig(cacheNames="user") public class RedisAn { public Map<String, User ...

  5. Spark2.1.0安装

    1.解压安装spark tar zxf spark-2.1.O-bin-2.6.0-CDH5.10.0.tgz 2.修改配置文件 vim /etc/profile export SPARK_HOME= ...

  6. 第15月第6天 ios UIScrollView不能响应TouchesBegin

    1. 1:@property MyScrollView *scrollView; 2:给MyScrollView,增加类别:MyScrollView+Touch 3:在类别里实现下面三个方法: @im ...

  7. Database学习 - mysql 连接数据库 库操作

    连接数据库 语法格式: mysql -h 服务器IP -P 端口号 -u用户名 -p密码 --prompt 命令提示符 --delimiter 指定分隔符 示例: mysql -h 127.0.0.1 ...

  8. jquery中选择checkbox拼接成字符串,然后到后台拆分取值

    jquery中选择checkbox拼接成字符串,然后到后台拆分取值 js中的代码 $("#btn").click(function(){ var chenked=$("i ...

  9. python 错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

    参照:http://www.runoob.com/django/django-form.html 做了个表单提交和回显,但是报了以上错误 查资料发现是 python从request取值的是unicod ...

  10. linux新内核的freeze框架以及意义【转】

    转自:https://blog.csdn.net/dog250/article/details/5303442 linux的电源管理发展非常迅速,比如在挂起到内存的时候,系统会冻结住所有的进程,也就是 ...