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对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...
随机推荐
- hdu-1181
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
- CodeForces Gym 100685I Innovative Business (贪心)
题意:给定一条路的长和宽,然后给你瓷砖的长和宽,你只能横着或者竖着铺,也可以切成片,但是每条边只能对应一条边,问你最少要多少瓷砖. 析:先整块整块的放,然后再考虑剩下部分,剩下的再分成3部分,先横着, ...
- dos生成目录树
1. tree命令详解 [Tree命令作用] 以图形显示驱动器或路径的文件夹结构. [Tree命令格式] 在命令行窗口使用tree /?查看帮助. TREE [drive:][path] [/F] [ ...
- web开发菜鸟应该如何向前端大神提问题(一次性把问题描述清楚)
1. 问题的环境和背景这里的背景一般包括,是针对桌面浏览器还是移动端开发?如果是桌面浏览器,则兼容性要求如何?比方说,你来咨询父级是百分比高度的垂直居中效果,你就要说明,你这个效果是需要兼容IE7+还 ...
- 百度地图API示例 JS
http://developer.baidu.com/map/jsdemo.htm#c2_2
- HDOJ1874最短路【spfa】
//不知道切过这道题目几次了,这次又wa了...双向路啊....这波简直无奈了,今晚又是浪成狗!!!! #include<cstdio> #include<vector> #i ...
- Pycharm 配置autopep8到菜单
Pycharm 可以自动检测PEP8规范. 我们可以安装autopep8来自动修改文件实现PEP8规范. 1.通过Pycharm安装autopep8 2.File->Setting->Ex ...
- 剑指OFFER之二叉树的镜像(九度OJ1521)
题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的 ...
- 第二章 "我要点爆"微信小程序点爆页面的实现与云函数和云存储的应用
点爆页面的实现与云函数和云存储的应用以及录音功能讲解 点爆页面制作 点爆页面主要提供文字记录和语音记录两种爆文记录方式,在本页面内输入文字或录入语音后选择心情点击点爆按钮,跳转到点爆方式选择界面. 首 ...
- JS与JQ的对比与提高
来吧, 案例1:先上个例子js写的省市二级联动 <!DOCTYPE html><html> <head> <meta charset="UTF-8& ...