LUOGU P1342 请柬(最短路)
解题思路
又是一道语文题,弄清楚题意之后其实就能想出来了,从1跑一遍最短路,把$dis[n]$加入答案。在建个反图跑一遍最短路,把$dis[n]_$加入最短路就行了。第一遍是去的时候,第二遍是回的时候。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue> using namespace std;
const int MAXN = ;
typedef long long LL; inline int rd(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?:;ch=getchar();}
while(isdigit(ch)) {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return f?x:-x;
} int n,m,head[MAXN],cnt;
int to[MAXN],nxt[MAXN],val[MAXN];
int head_[MAXN],cnt_,val_[MAXN],nxt_[MAXN],to_[MAXN];
LL dis[MAXN],ans;
bool vis[MAXN]; struct Node{
int w,id;
friend bool operator<(const Node A,const Node B){
return A.w>B.w;
}
}; priority_queue<Node> Q; inline void add(int bg,int ed,int w){
to[++cnt]=ed,val[cnt]=w,nxt[cnt]=head[bg],head[bg]=cnt;
} inline void add_(int bg,int ed,int w){
to_[++cnt_]=ed,val_[cnt_]=w,nxt_[cnt_]=head_[bg],head_[bg]=cnt_;
} void dijkstra(){
memset(dis,0x3f,sizeof(dis));
Node now;now.id=;now.w=;dis[]=;Q.push(now);
while(!Q.empty()){
Node zz=Q.top();Q.pop();int x=zz.id;
if(dis[x]!=zz.w || vis[x]) continue;vis[x]=;
for(register int i=head[x];i;i=nxt[i]){
int u=to[i];
if(dis[u]<=dis[x]+val[i]) continue;
dis[u]=dis[x]+val[i];
now.id=u;now.w=dis[u];Q.push(now);
}
}
for(register int i=;i<=n;i++) ans+=dis[i];
} void dijkstra_(){
memset(vis,false,sizeof(vis));
memset(dis,0x3f,sizeof(dis));
Node now;now.id=;now.w=;dis[]=;Q.push(now);
while(!Q.empty()){
Node zz=Q.top();Q.pop();int x=zz.id;
if(dis[x]!=zz.w || vis[x]) continue;vis[x]=;
for(register int i=head_[x];i;i=nxt_[i]){
int u=to_[i];
if(dis[u]<=dis[x]+val_[i]) continue;
dis[u]=dis[x]+val_[i];
now.id=u;now.w=dis[u];Q.push(now);
}
}
for(register int i=;i<=n;i++) ans+=dis[i];
} int main(){
n=rd(),m=rd();int x,y,z;
for(register int i=;i<=m;i++){
x=rd(),y=rd(),z=rd();
add(x,y,z),add_(y,x,z);
}
dijkstra(),dijkstra_();cout<<ans;
return ;
}
LUOGU P1342 请柬(最短路)的更多相关文章
- 洛谷 P1342 请柬 最短路+Dijkstra算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1342 请柬 题目描述 在电视时代,没有多少人观看戏 ...
- luogu P1342 请柬
题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被雇来分发这些请 ...
- Luogu P1342 请柬 题解
差不多是Dijkstra的裸题吧... 这道题可以分为来回两个阶段. 去的时候很简单,直接用一次Dijkstra,然后统计答案. 回来的时候就有些巧妙了,虽然表面上是每个点回到起点,但是何尝不可将其看 ...
- 洛谷P1342 请柬
P1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学 ...
- 洛谷——P1342 请柬
P1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学 ...
- P1342 请柬
最近一直在做最短路......所以今天就再做一道最短路吧.... 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片 ...
- [Luogu1342] 请柬 - 最短路模板
Description 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被 ...
- 洛谷—— P1342 请柬
https://www.luogu.org/problemnew/show/1342 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤 ...
- 题解 luogu P1144 【最短路计数】
本蒟蒻也来发一次题解第一篇请见谅 这个题有几个要点 1.无向无权图,建图的时候别忘记建来回的有向边[因此WA掉1次 2.无权嘛,那么边长建成1就好了2333333 3.最短路采用迪杰斯特拉(别忘用堆优 ...
随机推荐
- 20140421 常量指针与指针常量; const指针; reinterpret_cast ;const_cast作用
1.reinterpret_cast<type_id>(表达式)的作用: type-id 必须是一个指针.引用.算术类型.函数指针或者成员指针.它可以把一个指针转换成一个整数,也可以把一个 ...
- Ctrl快捷键
Ctrl + a - Jump to the start of the lineCtrl + b - Move back a charCtrl + c - Terminate the command ...
- Java 并发工具包——ExecutorService常用线程池
1. 执行器服务 ExecutorService java.util.concurrent.ExecutorService 接口表示一个异步执行机制,使我们能够在后台执行任务.因此一个 Executo ...
- vue多文件上传进度条 进度不更新问题
转自 hhttp://www.cnblogs.com/muge10/p/6767493.html 感谢这位兄弟的文章,之前因为这个问题 ,我连续在sgmentflow上提问过多次,完全没人能回答.谢谢 ...
- 随笔-ansible-3
关于循环的一些事: 是否是因为模块的原因? item适用于copy,但不适用于yum.虽然出现了警告,但并不表示不能用.功能还是不受影响的. 在上例中,我们使用了yum.copy.service模块( ...
- jmeter在windows环境下系统参数设置
在windows环境下搭建jmeter的压测实验环境,需要对操作系统默认的一些个参数进行设置,以提高并发能力.特别是作为压力机的时候. Socket 编程时,单机最多可以建立多少个 TCP 连接,受到 ...
- .Net Core JWT Bearer 的认证
关于JWT原理在这不多说,主要由三部分组成:Header.Payload.Signature,有兴趣自己上网了解. 1.首先创建.Net Core 一个Api项目 2.添加 JWT 配置 2.1 修改 ...
- VSCode 常用setiings.json设置
{ , , "editor.multiCursorModifier": "ctrlCmd", "editor.snippetSuggestions&q ...
- PL/SQL创建用户
步骤一:新建 步骤二:填写信息 对应SQL代码 -- Create the user create user WENT identified by "longrise" defau ...
- day 56 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...