第一反应想到和 poj3268做法一样,先是从起点dj,然后将图反向,再次dj一次,求和即可。但是,数据O(n*n)过不去,所以需要使用dijkstra的堆优化!

淦,没用scanf结果超时了= =

#pragma warning(disable:4996)
#include<iostream>
#include<string>
#include<cmath>
#include<ctype.h>
#include<memory.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<iomanip>
#include<set>
#include<list>
#include<vector>
#include<stack>
#include<queue>
#define ll long long int
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 1000010;int n, m;//p/n个点,q/m条边
int cnt = 0;
int T;
int head[maxn];int a[maxn][3];
ll dis[maxn];
int vis[maxn];struct EDGE
{int u, v, w;int next;
};
EDGE edge[maxn];struct node
{int u, d;node(int u, int d):u(u), d(d) {}bool operator < (const node& p)const{return d > p.d;}
};void ini()
{cnt = 0;memset(vis, 0, sizeof(vis));memset(dis, INF, sizeof(dis));for (int i = 0; i <= n; i++)head[i] = -1;/*for (int i = 0; i <= n; i++){head[i] = -1;vis[i] = 0;dis[i] = INF;}*/
}void addedge(int u, int v, int w)
{edge[cnt].v = v;edge[cnt].w = w;edge[cnt].next = head[u];head[u] = cnt++;
}ll dijkstra()
{priority_queue<node> q;q.push(node(1, 0));//node(int u, int d)//vis[1] = 1;dis[1] = 0;while (!q.empty()){node now = q.top(); q.pop();int u = now.u;//当前最短边的一个端点u//if (vis[u])continue;if (!vis[u]){vis[u] = 1;for (int i = head[u]; i != -1; i = edge[i].next){int v = edge[i].v;//新添加一个点,该点为最短边的除了u的另外一个端点vint w = edge[i].w;if (!vis[v] && dis[v] > dis[u] + w)//更新{dis[v] = dis[u] + w;q.push(node(v, dis[v]));}}}}ll ans = 0;for (int i = 1; i <= n; i++)ans += dis[i];return ans;}int main()
{ios::sync_with_stdio(false);cin.tie(0);cin >> T;while (T--){cin >> n >> m;ini();//输入n,m后,再初始化for (int i = 0; i < m; i++){//cin >> a[i][0] >> a[i][1] >> a[i][2];scanf("%d%d%d", &a[i][0], &a[i][1], &a[i][2]);addedge(a[i][0], a[i][1], a[i][2]);            }ll ans = dijkstra();ini();for (int i = 0; i < m; i++)//将边反向addedge(a[i][1], a[i][0], a[i][2]);ans += dijkstra();cout << ans << endl;}return 0;
}

poj1511 InvitationCards 最短路 Dijkstra堆优化相关推荐

  1. * poj 3159 Candies 最短路 dijkstra堆优化

    题意: n个人,m个信息,每行的信息是3个数字,A,B,C,表示B比A多出来的糖果不超过C个,问你,n号人最多比1号人多几个糖果 Input: 输入包含单个测试用例.测试用例以两个整数n和m开头,分别 ...

  2. HDU ACM 3986 Harry Potter and the Final Battle(邻接表实现最短路dijkstra堆优化记录路径 + 枚举最短路上每条边)...

    http://acm.hdu.edu.cn/showproblem.php?pid=3986 题意: 从起点1 到 终点n,删除图中任意一条边求最短路的最坏情况. n  --表示有n个点 m --边数 ...

  3. dijkstra堆优化(multiset实现-大大减小代码量)

    例题: Time Limit: 1 second Memory Limit: 128 MB [问题描述] 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣 ...

  4. A - Age of Moyu HDU - 6386(Dijkstra+堆优化)

    要解决这道题,可以用dfs+bfs,但是我不会,所以我只会dijkstra算法: 要解决这道题必须明白迪杰斯特拉算法的核心思想,我是这样理解的: 我可以任意举例一个图: 比如这个图,那么求1-6的最短 ...

  5. dij算法堆优化_BZOJ 3040 最短路(road) 堆优化Dijkstra | 学步园

    题目大意:最短路. 思路:最短路. 贴一份比较高效的堆优化Dij模板吧. CODE: #include #include #include #include #define _MAX 1000010 ...

  6. AcWing 850. Dijkstra求最短路 II(堆优化dijkstra)

    题目链接 : 点击查看 题目描述 : 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值. 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点, ...

  7. 寒假集训 最短路(I - Heavy Transportation)dijkstra+堆优化

    今天的集训学习了最短路dijkstra的堆优化,把时间复杂度从朴素版的O()降至了O(n*logn+m). 首先,先上一段朴素版的代码. void dijkstra() {dist[1] = 0;fo ...

  8. * Dijkstra 堆优化

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Mashiro_ylb/article/ ...

  9. dijkstra+堆优化

    分析: 可知Dijkstra算法的复杂度是O(n*n) Dijkstra算法在寻找集合T中距离最小的顶点W(即寻找dist数组中最小值)复杂度是O(n),在更新距离操作时复杂度为O(n). 上述操作需 ...

最新文章

  1. Kotlin基本语法和使用
  2. 为什么tcp不采用停等协议_为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?...
  3. (转载)linux下输入输出重定向和管道符
  4. oracle共享服务器模式的图,Oracle 11g笔记——专有服务器、共享服务器模式
  5. java se程序设计_JavaSE--Java 的基本程序设计结构
  6. CPU Cache对于并发编程的影响
  7. 何传启:第六次科技革命的三大“猜想
  8. css复选框样式_使用CSS样式复选框
  9. 面试必问:Java 垃圾回收机制
  10. 三星要带头了!考虑明年手机不送充电器
  11. java 反射 数组,Java 数组
  12. 论计算机的发展.doc,计算机的发展论文.doc
  13. python 参数一样结果不一样_使用不同的参数多次调用同一个函数python
  14. 一个网页如何决定是当前页打开还是新窗口打开?
  15. C盘\用户目录下\管理员文件夹 如何重命名?
  16. SQL SERVER 卸载清除步骤
  17. 双网口工业路由器 网络传输层的“常青树”
  18. JRTPLib的编译步骤
  19. python的pandas库无法调用_pandas库中最重要的几个知识点
  20. C++ 常用的八种排序方法

热门文章

  1. 剑指offer 第1题
  2. Java 导出 Excel 文件
  3. react实现的点击拖拽元素效果
  4. [USACO09OCT]热浪Heat Wave
  5. 【SQL】找出行数与自增标识值不相等的表(即有缺行)
  6. 深入探索PowerPivot客户端和服务器端架构
  7. CCF201809-4 再卖菜
  8. 贪心算法—区间调度 电影节(POJ 4151)
  9. 过滤 php 网址,php过滤html中的其他网站链接的方法(域名白名单功能)
  10. java 2 图形设计卷i awt_java 2 图形设计卷i:awt