洛谷P1342请柬
传送门啦
核心思想:两遍最短路.
1号点去各地的时间直接套最短路模板,各地到1号点时间用逆向思维,视为求1号点沿反边到各地的时间即可.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define re register
using namespace std;
const int maxn = 1000005;
inline int read(){
char ch = getchar();
int f = 1 , x = 0;
while(ch > '9' || ch < '0'){if(ch == '-')f = -1;ch = getchar();}
while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + ch - '0';ch = getchar();}
return x * f;
}
int n,m,u,v;
long long w;
int head1[maxn],tot1,head2[maxn],tot2;
long long ans,dis1[maxn],dis2[maxn];
struct Edge{
int from,to,next;
long long val;
}edge1[maxn<<1] , edge2[maxn<<1];
struct Node{
int u,d;
bool operator < (const Node &f) const {
return d > f.d;
}
};
inline void add1(int u,int v,long long w){
edge1[++tot1].from = u;
edge1[tot1].to = v;
edge1[tot1].val = w;
edge1[tot1].next = head1[u];
head1[u] = tot1;
}
inline void add2(int u,int v,long long w){
edge2[++tot2].from = u;
edge2[tot2].to = v;
edge2[tot2].val = w;
edge2[tot2].next = head2[u];
head2[u] = tot2;
}
inline void dijk1(int s){
for(re int i=1;i<=n;i++) dis1[i] = 1e9;
priority_queue<Node> q;
dis1[s] = 0;
q.push((Node) {s , dis1[s]});
while(!q.empty()){
Node cur = q.top();
q.pop();
int d = cur.d , u = cur.u;
if(d != dis1[u]) continue;
for(re int i=head1[u];i;i=edge1[i].next){
int v = edge1[i].to;
if(dis1[v] > dis1[u] + edge1[i].val){
dis1[v] = dis1[u] + edge1[i].val;
q.push((Node) {v , dis1[v]});
}
}
}
}
inline void dijk2(int s){
for(re int i=1;i<=n;i++) dis2[i] = 1e9;
priority_queue<Node> q;
dis2[s] = 0;
q.push((Node) {s , dis2[s]});
while(!q.empty()){
Node cur = q.top();
q.pop();
int d = cur.d , u = cur.u;
if(d != dis2[u]) continue;
for(re int i=head2[u];i;i=edge2[i].next){
int v = edge2[i].to;
if(dis2[v] > dis2[u] + edge2[i].val){
dis2[v] = dis2[u] + edge2[i].val;
q.push((Node) {v , dis2[v]});
}
}
}
}
int main(){
n = read(); m = read();
for(int i=1;i<=m;i++){
u = read(); v = read(); scanf("%lld",&w);
add1(u , v , w);
add2(v , u , w);
}
dijk1(1);
for(int i=2;i<=n;i++)
ans += dis1[i];
dijk2(1);
for(int i=n;i>=2;i--){
ans += dis2[i];
}
printf("%lld\n",ans);
return 0;
}
洛谷P1342请柬的更多相关文章
- 洛谷P1342 请柬(SPFA)
To 洛谷.1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计 ...
- 洛谷P1342 请柬
P1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学 ...
- 洛谷——P1342 请柬
P1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学 ...
- 洛谷 P1342 请柬 最短路+Dijkstra算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1342 请柬 题目描述 在电视时代,没有多少人观看戏 ...
- 洛谷 P1342 请柬(SPFA)
题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被雇来分发这些请 ...
- 洛谷 P1342 请柬
题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被雇来分发这些请 ...
- 洛谷—— P1342 请柬
https://www.luogu.org/problemnew/show/1342 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
随机推荐
- 构建工具----gradle---可能遇到的问题----Could not reserve enough space for object heap
Could not reserve enough space for object heap 意思是 jvm的设置内存不足以运行gradle命令了. 分为两种情况,解决的方法也不同. .10/user ...
- zuul学习
1.zuul可以代理界面所需的后端服务,可以解决CORS(Cross-Origion-Resource-Sharing)和认证问题(authentication)问题 2.zuul是使用ribbon来 ...
- Qt ------ 截图、获取鼠标指定的RGB值
获取RGB值思路:截图,获取图片的(0,0)的RGB值 int x = QCursor::pos().x(); int y = QCursor::pos().y(); // QPixmap pixma ...
- Qt ------ Q_UNUSED
Q_UNUSED(name) Indicates to the compiler that the parameter with the specified name is not used in t ...
- Java入门:基础算法之求数组元素的和
本程序计算数组中所有元素的和. 代码1:数组元素由程序内部初始化 /** * @author: 理工云课堂 * @description: 求数组元素的和 */ class SumOfArray{ p ...
- SQL分页数据重复问题
对于关系数据库来说,直接写SQL拉数据在列表中显示是很常用的做法.但如此便带来一个问题:当数据量大到一定程度时,系统内存迟早会耗光.另外,网络传输也是问题.如果有1000万条数据,用户想看最后一条,这 ...
- 一个highcharts混合图Demo
公司要我做一个highcharts的mockup,其实半个小时就能做完了,我做了将近两个小时,唉!不过还好,总算把东西学会了.勤能补拙! 把代码贴上来 布局很简单,一个div里套两个div,给好id, ...
- 最佳的MongoDB客户端管理工具
<最佳的MongoDB客户端管理工具> 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一个好的MongoD ...
- Javascript技术之详尽解析event对象
描述event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的过程中才有效.event的某些属性只对特定的事件有意义.比如,fromEleme ...
- js 禁用右键菜单、拖拽、选中、复制
//禁用拖拽 document.ondragstart = function () { return false; }; /** * 禁用右键菜单 */ document.oncontextmenu ...