传送门啦

核心思想:两遍最短路.

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请柬的更多相关文章

  1. 洛谷P1342 请柬(SPFA)

    To 洛谷.1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计 ...

  2. 洛谷P1342 请柬

    P1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学 ...

  3. 洛谷——P1342 请柬

    P1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学 ...

  4. 洛谷 P1342 请柬 最短路+Dijkstra算法

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1342 请柬 题目描述 在电视时代,没有多少人观看戏 ...

  5. 洛谷 P1342 请柬(SPFA)

    题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被雇来分发这些请 ...

  6. 洛谷 P1342 请柬

    题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被雇来分发这些请 ...

  7. 洛谷—— P1342 请柬

    https://www.luogu.org/problemnew/show/1342 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤 ...

  8. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  9. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

随机推荐

  1. 构建工具----gradle---可能遇到的问题----Could not reserve enough space for object heap

    Could not reserve enough space for object heap 意思是 jvm的设置内存不足以运行gradle命令了. 分为两种情况,解决的方法也不同. .10/user ...

  2. zuul学习

    1.zuul可以代理界面所需的后端服务,可以解决CORS(Cross-Origion-Resource-Sharing)和认证问题(authentication)问题 2.zuul是使用ribbon来 ...

  3. Qt ------ 截图、获取鼠标指定的RGB值

    获取RGB值思路:截图,获取图片的(0,0)的RGB值 int x = QCursor::pos().x(); int y = QCursor::pos().y(); // QPixmap pixma ...

  4. Qt ------ Q_UNUSED

    Q_UNUSED(name) Indicates to the compiler that the parameter with the specified name is not used in t ...

  5. Java入门:基础算法之求数组元素的和

    本程序计算数组中所有元素的和. 代码1:数组元素由程序内部初始化 /** * @author: 理工云课堂 * @description: 求数组元素的和 */ class SumOfArray{ p ...

  6. SQL分页数据重复问题

    对于关系数据库来说,直接写SQL拉数据在列表中显示是很常用的做法.但如此便带来一个问题:当数据量大到一定程度时,系统内存迟早会耗光.另外,网络传输也是问题.如果有1000万条数据,用户想看最后一条,这 ...

  7. 一个highcharts混合图Demo

    公司要我做一个highcharts的mockup,其实半个小时就能做完了,我做了将近两个小时,唉!不过还好,总算把东西学会了.勤能补拙! 把代码贴上来 布局很简单,一个div里套两个div,给好id, ...

  8. 最佳的MongoDB客户端管理工具

    <最佳的MongoDB客户端管理工具> 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一个好的MongoD ...

  9. Javascript技术之详尽解析event对象

    描述event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的过程中才有效.event的某些属性只对特定的事件有意义.比如,fromEleme ...

  10. js 禁用右键菜单、拖拽、选中、复制

    //禁用拖拽 document.ondragstart = function () { return false; }; /** * 禁用右键菜单 */ document.oncontextmenu ...