BZOJ1576 (最短路+并查集)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define inline __attribute__((optimize("O2")))
using namespace std; #define maxn 100008
#define maxm 1000008
#define INF 2000000000
#define pa pair<int,int> struct line{
int u,v,w,nt;
}eg[maxm],E[maxm],e[maxm]; int lt[maxn],fa[maxn],n,m,sum=,num=,f[maxn],ans[maxn];
int d[maxn],pd[maxn]; inline void add(int u,int v,int w){
eg[++sum].v=v; eg[sum].w=w; eg[sum].nt=lt[u]; lt[u]=sum;
}
inline void read(int &x){
char ch;
for (ch=getchar();ch<''||ch>'';ch=getchar()); x=ch-;
for (ch=getchar();ch>=''&&ch<='';ch=getchar()) x=x*+ch-;
} /*inline void spfa(){
for (int i=1;i<=n;i++) d[i]=INF;
queue<int> Q;
memset(pd,0,sizeof(pd));
pd[1]=1; d[1]=0; Q.push(1);
while (!Q.empty()){
int u=Q.front();
for (int i=lt[u];i;i=eg[i].nt){
int v=eg[i].v;
if (d[u]+eg[i].w<d[v]){
d[v]=d[u]+eg[i].w;
fa[v]=u;
if (!pd[v]){
Q.push(v);
pd[v]=1;
}
}
}
pd[u]=0;
Q.pop();
}
}*/ inline void dijkstra(){
priority_queue<pa,vector<pa>,greater<pa> > Q;
memset(pd,,sizeof(pd));
for (int i=;i<=n;i++) d[i]=INF;
d[]=; Q.push(make_pair(,));
while (!Q.empty()){
int u=Q.top().second; Q.pop();
if (pd[u]) continue; pd[u]=;
for (int i=lt[u];i;i=eg[i].nt)
if (d[u]+eg[i].w<d[eg[i].v]){
d[eg[i].v]=d[u]+eg[i].w;
fa[eg[i].v]=u;
Q.push(make_pair(d[eg[i].v],eg[i].v));
}
}
} inline bool cmp(line i,line j){
return i.w<j.w;
} inline int find(int x){ return f[x]==x?x:f[x]=find(f[x]); } inline void work(int u,int v,int w){
int x=find(u),y=find(v);
while (x!=y){
if (d[x]<d[y]) swap(x,y);
ans[x]=w-d[x];
num++;
f[x]=fa[x];
x=find(f[x]);
}
} inline int main(){
read(n); read(m);
int x,y,z;
for (int i=;i<=m;i++){
read(x); read(y); read(z);
add(x,y,z); add(y,x,z);
e[i].u=x; e[i].v=y; e[i].w=z;
}
dijkstra();
int cnt=;
for (int i=;i<=m;i++){
int u=e[i].u,v=e[i].v,w=e[i].w;
if (fa[u]!=v && fa[v]!=u){
E[++cnt].u=u;
E[cnt].v=v;
E[cnt].w=d[u]+d[v]+w;
}
}
sort(E+,E+cnt+,cmp);
for (int i=;i<=n;i++) { ans[i]=-; f[i]=i; }
for (int i=;i<=cnt;i++){
work(E[i].u,E[i].v,E[i].w);
if (num==n-) break;
}
for (int i=;i<=n;i++) printf("%d\n",ans[i]);
}
BZOJ1576 (最短路+并查集)的更多相关文章
- 【BZOJ1576】[Usaco2009 Jan]安全路经Travel 最短路+并查集
[BZOJ1576][Usaco2009 Jan]安全路经Travel Description Input * 第一行: 两个空格分开的数, N和M * 第2..M+1行: 三个空格分开的数a_i, ...
- BZOJ1576: [Usaco2009 Jan]安全路经Travel(最短路 并查集)
题意 给你一张无向图,保证从1号点到每个点的最短路唯一.对于每个点求出删掉号点到它的最短路上的最后一条边(就是这条路径上与他自己相连的那条边)后1号点到它的最短路的长度 Sol emmm,考场上想了个 ...
- bzoj3694: 最短路(树链剖分/并查集)
bzoj1576的帮我们跑好最短路版本23333(双倍经验!嘿嘿嘿 这题可以用树链剖分或并查集写.树链剖分非常显然,并查集的写法比较妙,涨了个姿势,原来并查集的路径压缩还能这么用... 首先对于不在最 ...
- 【BZOJ-1576】安全路径Travel Dijkstra + 并查集
1576: [Usaco2009 Jan]安全路经Travel Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1044 Solved: 363[Sub ...
- BZOJ4699 树上的最短路(最短路径+dfs序+线段树+堆+并查集)
首先一般化的将下水道和塌陷看成一个东西.注意到在从源点出发的所有需要使用某条下水道的最短路径中,该下水道只会被使用一次,该下水道第一个被访问的点相同,且只会在第一个访问的点使用该下水道.这个第一个访问 ...
- 洛谷P4768 [NOI2018]归程(可持久化并查集,最短路)
闲话 一个蒟蒻,在网络同步赛上进行了这样的表演-- T2组合计数不会,T3字符串数据结构不会,于是爆肝T1 一开始以为整个地图都有车,然后写了2h+的树套树,终于发现样例过不去 然后写可持久化并查集D ...
- 【bzoj5049】[Lydsy九月月赛]导航系统 并查集+双向BFS最短路
题目描述 给你一张 $n$ 个点 $m$ 条边的随机图,边权为1.$k$ 次询问两点间最短路,不连通则输出-1. 输入 第一行包含3个正整数n,m,k(2<=n<=100000,1< ...
- 2015多校第6场 HDU 5361 并查集,最短路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5361 题意:有n个点1-n, 每个点到相邻点的距离是1,然后每个点可以通过花费c[i]的钱从i点走到距 ...
- 【BZOJ4144】[AMPPZ2014]Petrol(最短路+最小生成树+并查集)
Description 给定一个n个点.m条边的带权无向图,其中有s个点是加油站. 每辆车都有一个油量上限b,即每次行走距离不能超过b,但在加油站可以补满. q次询问,每次给出x,y,b,表示出发点是 ...
随机推荐
- jquery UI datepicker时间控件的使用
参考: http://api.jqueryui.com/datepicker/#method-show 英文 http://www.helloweba.com/view-blog-168.html 中 ...
- OLE填充EXCEL
先把基本的FORM写好: 1.行列属性 FORM row_column USING p_r p_width p_type. CASE p_type. WHEN 'R'. "行高 = p_r ...
- BP神经网络
BP神经网络基本原理 BP神经网络是一种单向传播的多层前向网络,具有三层或多层以上的神经网络结构,其中包含输入层.隐含层和输出层的三层网络应用最为普遍. 网络中的上下层之间实现全连接,而每层神经元之 ...
- MongoDB 一对多关系建模
转文: 本篇博客翻译自: http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-par ...
- loadrunner 打印变量
打印userid变量参数的信息 web_submit_form("ValidateLoginAction.do_2", "Snapshot=t2.inf", ...
- MySQL数据库百万级高并发网站实战
在一开始接触PHP接触MYSQL的时候就听不少人说:“MySQL就跑跑一天几十万IP的小站还可以,要是几百万IP就不行了”,原话不记得了,大体 就是这个意思.一直也没有好的机会去验证这个说法,一是从没 ...
- Https 协议
前言 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下 ...
- undefined reference to typeinfo - C++ error message
undefined reference to typeinfo - C++ error message There are some compiler and loader error message ...
- 一模 (3) day1
第一题: 题目大意:给出m个小于n的数,求出出现次数大于m div 2 的数. 1<=n<=2^31 1<=m<=10000 解题过程: 1.看到m的数据范围比较小,直接 ...
- ubuntu 14.04 安装 foxit pdf阅读器
1.官网下载 http://www.foxitsoftware.cn/downloads/ 2.安装 tar -zxvf FoxitReader1.01.0925_Server_x64_enu_Set ...