UVALive 4080 Warfare And Logistics (最短路树)
很多的边会被删掉,需要排除一些干扰进行优化。
和UVA - 1279 Asteroid Rangers类似,本题最关键的地方在于,对于一个单源的最短路径来说,如果最短路树上的边没有改变的话,那么最短路肯定是不会变的,
所以只要枚举删掉最短路树上的边。这样的时间复杂度就能过了。
#include<bits/stdc++.h>
using namespace std; const int maxn = , maxm = ;
int head[maxn], to[maxm], nxt[maxm],wei[maxm],ecnt;
int delta[maxm]; void addEdge(int u,int v,int w)
{
to[ecnt] = v;
nxt[ecnt] = head[u];
wei[ecnt] = w;
head[u] = ecnt++;
} typedef pair<int,int> Node;
#define fi first
#define se second int d[maxn],pa[maxn];
typedef long long ll; void dijkstra(int n,int s,int L,bool flag,int e1,int e2)// e1 e2 边应该忽略
{
priority_queue<Node,vector<Node>,greater<Node> > q;
fill(d,d+n,L);
d[s] = ; q.push(Node(,s)); pa[s] = -;
while(q.size()){
Node x = q.top(); q.pop();
int u = x.se;
if(x.fi != d[u]) continue;
for(int i = head[u]; ~i; i = nxt[i])if(i!=e1 && i!=e2) {
int v = to[i];
if(d[v] > d[u]+wei[i]){
d[v] = d[u]+wei[i];
if(flag) pa[v] = i; // 入边编号
q.push(Node(d[v],v));
}
}
}
} ll cal(int n)
{
ll ret = ;
for(int i = ; i < n; i++){
ret += d[i];
}
return ret;
} void init()
{
memset(head,-,sizeof(head));
ecnt = ;
memset(delta,,sizeof(delta));
} int main()
{
//freopen("in.txt","r",stdin);
int n,m,L;
while(~scanf("%d%d%d",&n,&m,&L)){
init();
while(m--){
int u,v,w; scanf("%d%d%d",&u,&v,&w);
addEdge(--u,--v,w); addEdge(v,u,w);
}
ll ans1 = ;
vector<int> edges;
for(int u = ; u < n; u++){
dijkstra(n,u,L,true,-,-);
ll t = cal(n);
ans1 += t;
for(int i = ; i < n; i++){
if(~pa[i]){
dijkstra(n,u,L,false,pa[i],pa[i]^);
int eid = pa[i]&(~);
if(!delta[eid]) edges.push_back(eid);
delta[eid] += cal(n)-t;
}
}
}
int MaxDelta = ;
for(int i = ; i < (int)edges.size(); i++){
MaxDelta = max(MaxDelta,delta[edges[i]]);
}
printf("%lld %lld\n",ans1,ans1+MaxDelta);
}
return ;
}
UVALive 4080 Warfare And Logistics (最短路树)的更多相关文章
- LA4080/UVa1416 Warfare And Logistics 最短路树
题目大意: 求图中两两点对最短距离之和 允许你删除一条边,让你最大化删除这个边之后的图中两两点对最短距离之和. 暴力:每次枚举删除哪条边,以每个点为源点做一次最短路,复杂度\(O(NM^2logN)\ ...
- UVA 4080 Warfare And Logistics 战争与物流 (最短路树,变形)
题意: 给一个无向图,n个点,m条边,可不连通,可重边,可多余边.两个问题,第一问:求任意点对之间最短距离之和.第二问:必须删除一条边,再求第一问,使得结果变得更大. 思路: 其实都是在求最短路的过程 ...
- 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树)
layout: post title: 训练指南 UVALive - 4080(最短路Dijkstra + 边修改 + 最短路树) author: "luowentaoaa" ca ...
- LA 4080 战争和物流(最短路树)
https://vjudge.net/problem/UVALive-4080 题意:给出一个n个结点m条边的无向图,每条边上有一个正权.令c等于每对结点的最短路长度之和.不连通的两点的最短路长度视为 ...
- la4080 Warfare And Logistics 罗列+最短
为了图.计算最短随机分ans1.和删除边缘.免费才能够获得最大和短路之间的最大分ans2,如果这两个不沟通.看作是两个点之间的最短距离l. 第一个想法是枚举每个边缘,然后运行n最短时间.但是,这种复杂 ...
- UVA1416 Warfare And Logistics
UVA1416 Warfare And Logistics 链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36232 [ ...
- 【UVA1416】(LA4080) Warfare And Logistics (单源最短路)
题目: Sample Input4 6 10001 3 21 4 42 1 32 3 33 4 14 2 2Sample Output28 38 题意: 给出n个节点m条无向边的图,每条边权都为正.令 ...
- hdu 3409 最短路树+树形dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3409 参考博客:http://www.cnblogs.com/woaishizhan/p/318981 ...
- BZOJ1975[Sdoi2010]魔法猪学院——可持久化可并堆+最短路树
题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...
随机推荐
- Python 之IO模型
阻塞IO模型:以前写的套接字通信都是阻塞型的.通过并发提高效率 非阻塞IO模型: from socket import * # 并不推荐使用,一是消耗cpu资源,二是会响应延迟 server = so ...
- Content Security Policy的学习理解
以下内容转载自 http://www.cnblogs.com/alisecurity/p/5924023.html 跨域脚本攻击 XSS 是最常见.危害最大的网页安全漏洞. 为了防止它们,要采取很多编 ...
- c# 调用 webservices (转载)
.net 调用webservice 总结 最近做一个项目,由于是在别人框架里开发app,导致了很多限制,其中一个就是不能直接引用webservice . 我们都知道,调用webserivice 最简单 ...
- sql添加表
IF EXISTS(SELECT * FROM sysobjects WHERE name='learnRecord') DROP TABLE learnRecord GO CREATE TABLE ...
- 64位Win7中7zip无法关联文件的问题
问题1:win7x64中安装了7zip,在解压文件右键打开无法关联文件. 解决方法1:在开始菜单中打开7-zip File Manage->工具 ->选项 ->7-zip 勾选“添加 ...
- 洛谷P3960 列队(Splay)
传送门 感觉自己好久不打数据结构已经完全不会了orz…… 据说正解树状数组?然而并不会 首先考虑一下每一次操作,就是把一个人从这一行中取出并放到行的最后,再从最后一列取出放到列的最后 那么这两种操作其 ...
- 洛谷P1919 【模板】A*B Problem升级版(FFT)
传送门 话说FFT该不会真的只能用来做这种板子吧…… 我们把两个数字的每一位都看作多项式的系数 然后这就是一个多项式乘法 上FFT就好了 然后去掉前导零 (然而连FFT的板子都背不来orz,而且空间又 ...
- [HNOI2010] 公交线路 bus
标签:状态压缩+矩阵快速幂. 题解: 首先看范围,p<=10,那么我们可以想到状态压缩.我们把从一个长度为10的区间进行压缩,1代表可以,那么当值一个区间的1的个数为k个,我们就认为他是合法的. ...
- springcloud2 (三) 服务治理Eureka及其实现原理
代码地址:https://gitlab.com/showkawa/architect/tree/master/microservice/eurake 基于springcloud2分析eurake知识点 ...
- 关于idea中使用lamb表达式报错:ambda expressions are not supported at this language level
我使用的是jdk1.8,使用lamb表达式的时候,报错 ambda expressions are not supported at this language level, 后来,设置了 接着重启了 ...