uva 1416 Warfare And Logistics
题意:
给出一个无向图,定义这个无向图的花费是

其中path(i,j),是i到j的最短路。
去掉其中一条边之后,花费为c’,问c’ – c的最大值,输出c和c’。
思路:
枚举每条边,每次把这条边去掉,然后以每个点为起点,跑一次Dijkstra,再计算总花费。
这样的复杂度为O(mn^2log(n)),这个复杂度刚好卡着时间过,所以是暴力,更优的方法是最短路树(待学习。
代码:
#include <stdio.h>
#include <string.h>
#include <vector>
#include <queue>
using namespace std; struct edge
{
int to,cost;
int id; edge(int uu,int vv,int idd)
{
to = uu;
cost = vv;
id = idd;
}
}; const int maxn = ; typedef pair<long long,int> pii;
long long d[maxn];
vector<edge> g[maxn];
bool ma[]; void adde(int st,int en,int cost,int id)
{
g[st].push_back(edge(en,cost,id));
} void dij(int s,int n)
{
for (int i = ;i <= n;i++) d[i] = 1e16; priority_queue<pii,vector<pii>,greater<pii> > pq; pq.push(pii(,s)); d[s] = ; //printf("***\n"); while (!pq.empty())
{
pii x = pq.top();pq.pop(); int v = x.second; if (d[v] < x.first) continue; for (int i = ;i < g[v].size();i++)
{
edge e = g[v][i]; if (d[e.to] > d[v] + e.cost)
{
d[e.to] = d[v] + e.cost;
pq.push(pii(d[e.to],e.to));
}
}
} //printf("***\n");
} void dijk(int s,int n)
{
for (int i = ;i <= n;i++) d[i] = 1e16; priority_queue<pii,vector<pii>,greater<pii> > pq; pq.push(pii(,s)); d[s] = ; while (!pq.empty())
{
pii x = pq.top();pq.pop(); int v = x.second; if (d[v] < x.first) continue; for (int i = ;i < g[v].size();i++)
{
edge e = g[v][i]; if (ma[e.id]) continue; if (d[e.to] > d[v] + e.cost)
{
d[e.to] = d[v] + e.cost;
pq.push(pii(d[e.to],e.to));
}
}
} //printf("***\n");
} int main()
{
int n,m,l; while (scanf("%d%d%d",&n,&m,&l) != EOF)
{
for (int i = ;i <= n;i++) g[i].clear(); for (int i = ;i < m;i++)
{
int a,b,c; scanf("%d%d%d",&a,&b,&c); adde(a,b,c,i);
adde(b,a,c,i);
} long long ans = ; for (int i = ;i <= n;i++)
{ dij(i,n); for (int j = ;j <= n;j++)
{
if (d[j] == 1e16) d[j] = l;
ans += d[j];
}
} long long res = ;
long long tmp = ; for (int i = ;i < m;i++)
{
ma[i] = ; long long orz = ; for (int j = ;j <= n;j++)
{
dijk(j,n); for (int k = ;k <= n;k++)
{
if (d[k] == 1e16) d[k] = l;
orz += d[k];
}
} if (orz - ans > tmp)
{
res = orz;
tmp = orz - ans;
} ma[i] = ;
} printf("%lld %lld\n",ans,res);
} return ;
}
uva 1416 Warfare And Logistics的更多相关文章
- UVA - 1416 Warfare And Logistics (最短路)
Description The army of United Nations launched a new wave of air strikes on terroristforces. The ob ...
- UVA 4080 Warfare And Logistics 战争与物流 (最短路树,变形)
题意: 给一个无向图,n个点,m条边,可不连通,可重边,可多余边.两个问题,第一问:求任意点对之间最短距离之和.第二问:必须删除一条边,再求第一问,使得结果变得更大. 思路: 其实都是在求最短路的过程 ...
- UVA1416 Warfare And Logistics
UVA1416 Warfare And Logistics 链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36232 [ ...
- Warfare And Logistics UVA - 1416
题目链接:https://vjudge.net/problem/UVA-1416 题解: 这是一个最短路的好题,首先我们考虑如果暴力弗洛伊德,显然时间复杂度不对,如果做n次spfa好像复杂度也不对,所 ...
- UVALive 4080 Warfare And Logistics (最短路树)
很多的边会被删掉,需要排除一些干扰进行优化. 和UVA - 1279 Asteroid Rangers类似,本题最关键的地方在于,对于一个单源的最短路径来说,如果最短路树上的边没有改变的话,那么最短路 ...
- 【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条无向边的图,每条边权都为正.令 ...
- LA4080/UVa1416 Warfare And Logistics 最短路树
题目大意: 求图中两两点对最短距离之和 允许你删除一条边,让你最大化删除这个边之后的图中两两点对最短距离之和. 暴力:每次枚举删除哪条边,以每个点为源点做一次最短路,复杂度\(O(NM^2logN)\ ...
- la4080 Warfare And Logistics 罗列+最短
为了图.计算最短随机分ans1.和删除边缘.免费才能够获得最大和短路之间的最大分ans2,如果这两个不沟通.看作是两个点之间的最短距离l. 第一个想法是枚举每个边缘,然后运行n最短时间.但是,这种复杂 ...
- UVA1416/LA4080 Warfare And Logistics
题目大意:有N个点,M条路,如果两条路不连通的话,就将这两条路的距离设置为L 现在要求你求出每两点之间的最短距离和 接着要求 求出炸断 给出的M条路中的一条路后,每两点之间的最短距离和的最大值(翻译来 ...
随机推荐
- 洛谷P4556 雨天的尾巴 线段树
正解:线段树合并 解题报告: 传送门! 考虑对树上的每个节点开一棵权值线段树,动态开点,记录一个max(num,id)(这儿的id,define了一下,,,指的是从小到大排QAQ 然后修改操作可以考虑 ...
- Servlet----------Servlet 概述
1.什么是Servlet Servle t是Java Web 的三大组件之一,它属于动态资源.Servlet 的作用是处理请求,服务器会把接收到时的请求交给 Servlet 来处理,在Servlet中 ...
- (3.15)mysql基础深入——mysql默认数据库/系统数据库
(3.15)mysql基础深入——mysql默认数据库 关键词:Mysql默认数据库,mysql系统数据库 系统数据库的组成 一共4个 [1]information_schema(可以理解成字典表) ...
- 前端 HTML标签属性
HTML标签可以设置属性,如下: <div id="i1">这是一个div标签</div> <p class='p1 p2 p3'>这是一个段落 ...
- ros 运行rviz时出现 QXcbConnection: XCB error: 148 错误 解决方法
出现上述问题的原因: 1.由于使用了nvc远程控制下位机: 2.rviz是一个基于opengl开发的图形插件,需要使用理论的屏幕参数(thetis' screen),由于使用了teamviewer会导 ...
- RN-ios模拟器上调出中文输入法
react-native 项目:在ios模拟器上需要拼写汉字,步骤是, 1.在模拟器的设置-通用-语言与地区-iphone语言设置为:简体中文 2.模拟器的 Hardware-Keyboard-勾选下 ...
- 网络基础之2——TCP/IP参考模型
本内容主要来源于<看透Spring MVC源码分析与实践——韩路彪>一书 BS结构网络传输的分解方式有两种: 1.OSI参考模型. 2.TCP/IP参考模型. OSI和TCP/IP分层模型 ...
- 利用Python实现简单的相似图片搜索的教程
大概五年前吧,我那时还在为一家约会网站做开发工作.他们是早期创业公司,但他们也开始拥有了一些稳定用户量.不像其他约会网站,这家公司向来以洁身自好为主要市场形象.它不是一个供你鬼混的网站——是让你能找到 ...
- map的使用方式之一。
map有返回值 foreach 没得.. 得到结果 可以把里面的值以数组的方式取出来: 举例:
- JS 8-2 再谈原型
var bosn = new Student创建了Student的实例bosn.bosn的原型(__proto__)指向构造器Student的prototype属性. Student.prototyp ...