LuoguP1342请柬 【最短路/建反图】By cellur925
开始就想直接正向跑一遍Dij把到各点的最短路加起来即可,后来发现与样例少了些,于是再读题发现需要也求出学生们回来的最短路。
但是注意到本题是有向图,如果是无向图就好说。
那么我们怎么解决?可以建一个反图。于是本题就解决了==
Code
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#define maxn 2000090 using namespace std;
typedef long long ll; int n,m,tot;
int head[maxn],vis[maxn],hea[maxn];
ll ans,dis[maxn],d[maxn];
struct node{
int to,next;
int val;
}edge[maxn],edg[maxn]; void add(int x,int y,int z)
{
edge[++tot].to=y;
edge[tot].next=head[x];
head[x]=tot;
edge[tot].val=z;
} void add_nega(int x,int y,int z)
{
edg[++tot].to=y;
edg[tot].next=hea[x];
hea[x]=tot;
edg[tot].val=z;
} void dijkstra()
{
priority_queue<pair<int,int> >q;
memset(dis,,sizeof(dis));
q.push(make_pair(,));dis[]=;
while(!q.empty())
{
int u=q.top().second;q.pop();
if(vis[u]) continue;
vis[u]=;
for(int i=head[u];i;i=edge[i].next)
{
int v=edge[i].to;
if(dis[v]>dis[u]+edge[i].val)
{
dis[v]=dis[u]+edge[i].val;
if(!vis[v]) q.push(make_pair(-dis[v],v));
}
}
}
} void dijk()
{
priority_queue<pair<int,int> >q;
memset(d,,sizeof(d));
memset(vis,,sizeof(vis));
q.push(make_pair(,));d[]=;
while(!q.empty())
{
int u=q.top().second;q.pop();
if(vis[u]) continue;
vis[u]=;
for(int i=hea[u];i;i=edg[i].next)
{
int v=edg[i].to;
if(d[v]>d[u]+edg[i].val)
{
d[v]=d[u]+edg[i].val;
if(!vis[v]) q.push(make_pair(-d[v],v));
}
}
}
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int x=,y=,z=;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);add_nega(y,x,z);
}
dijkstra();
dijk();
for(int i=;i<=n;i++)
ans+=dis[i]+d[i]/*,printf("%d\n",dis[i])*/;
printf("%lld",ans);
return ;
}
LuoguP1342请柬 【最短路/建反图】By cellur925的更多相关文章
- Luogu P1073 最优贸易【最短路/建反图】 By cellur925
题目传送门 这么经典的题目,还是看了lyd的题解....唉难过. 一句话题意:在一张点有全都的图上找一条从1到n的路径,存在两个点p,q(p<q),使val[q]-val[p]最大. 给出的图是 ...
- POJ3268 Silver Cow Party (建反图跑两遍Dij)
One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big co ...
- POJ 2438 Children’s Dining (哈密顿图模板题之巧妙建反图 )
题目链接 Description Usually children in kindergarten like to quarrel with each other. This situation an ...
- hdu 2647 Reward(拓扑排序+反图)
题目链接:https://vjudge.net/contest/218427#problem/C 题目大意: 老板要给很多员工发奖金, 但是部分员工有个虚伪心态, 认为自己的奖金必须比某些人高才心理平 ...
- 炸弹:线段树优化建边+tarjan缩点+建反边+跑拓扑
这道题我做了有半个月了...终于A了... 有图为证 一句话题解:二分LR线段树优化建边+tarjan缩点+建反边+跑拓扑统计答案 首先我们根据题意,判断出来要炸弹可以连着炸,就是这个炸弹能炸到的可以 ...
- POJ 2502 Subway ( 最短路 && 最短路建图 )
题意 : 给出二维平面上的两个点代表起点以及终点,接下来给出若干条地铁线路,除了在地铁线路上行进的速度为 40km/h 其余的点到点间都只能用过步行且其速度为 10km/h ,现问你从起点到终点的最短 ...
- [Luogu1342] 请柬 - 最短路模板
Description 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被 ...
- LUOGU P1342 请柬(最短路)
传送门 解题思路 又是一道语文题,弄清楚题意之后其实就能想出来了,从1跑一遍最短路,把$dis[n]$加入答案.在建个反图跑一遍最短路,把$dis[n]_$加入最短路就行了.第一遍是去的时候,第二遍是 ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) E. Bear and Forgotten Tree 2 bfs set 反图的生成树
E. Bear and Forgotten Tree 2 题目连接: http://www.codeforces.com/contest/653/problem/E Description A tre ...
随机推荐
- no matching provisioning profiles found
问题:真机连上,执行这个提示. 解决: 项目->targets->Bulid Settings-> 1,Provisioning Profile->选择配置Bundle Ide ...
- 关于使用openfiler作为共享存储来安装rac时的问题
关于使用openfiler作为共享存储来安装rac时的问题 第一:一定要使用openfiler-2.3-x86-disc1.iso这个版本号的openfiler,不要使用其它版本号的openfiler ...
- 笔记整理--LibCurl开发
LibCurl开发_未了的雨_百度空间 - Google Chrome (2013/7/26 21:11:15) LibCurl开发 一:LibCurl 编程流程1.调用curl_global_ini ...
- LeetCode(26)题解:Remove Duplicates from Sorted Array
https://leetcode.com/problems/remove-duplicates-from-sorted-array/ Given a sorted array, remove the ...
- hadoop 一些文件操作
在HDFS上面,FileSystem创建目录 复制本地文件到HDFS 获取集群中的节点
- 使用iconv的包装类CharsetConverter进行编码转换的示例
GitHub地址https://github.com/BuYishi/charset_converter_test charset_converter_test.cpp #include <io ...
- 时光轴一之listView实现时光轴效果
尼玛.非要搞什么时光轴,一想简单的不就是个listView吗,然后一步一步来就好了,哈哈别看那么好看事实上不要想多了. 时光轴timeline最大的作用就是把过去的事物系统化.完整化.精确化.时间轴可 ...
- linux内核的三种主要调度策略
linux内核的三种主要调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务 3,SCHED_RR实时调度策略,时间片轮转 实时进程将得到优先调用, ...
- 总结 <stdlib.h>头文件 在算法中可能会用到的一些函数
头文件<stdlib.>具有一定的总结性. 它定义了类型.宏和各种函数,这些函数用于:内存管理.排序和查找.整形运算.字符串到数字的转换.伪随机数序列.与环境的接口.把多字节字符串和字符转 ...
- asp.net下的cookieName
https://stackoverflow.com/questions/1017144/rename-asp-net-sessionid Add to your web.config:- <sy ...