很多的边会被删掉,需要排除一些干扰进行优化。

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 ;
}

最新文章

  1. oauth协议
  2. git 临时记录
  3. MySQL学习笔记--基本操作
  4. 修改开机启动等待时间(for Ubuntu12.10)
  5. linux安装 Android Studio详细教程,支持性较差,需要安装最新底层库内核的linux
  6. 实现一次请求加载多个js或者css
  7. GRUB三步通(转)
  8. Mac终端命令收集
  9. css 10 款非常棒的CSS代码格式化工具推荐
  10. 关于Oracle、SqlServer 的sql递归查询
  11. Windows 快捷键总结
  12. tensorFlow入门实践(三)实现lenet5(代码结构优化)
  13. BZOJ.4825.[AHOI/HNOI2017]单旋(线段树)
  14. pngcrush caught libpng error原因及解决方法
  15. (笔记)ubuntu下安装jdk
  16. Vivado抓取信号
  17. OpenStack入门之【OpenStack-havana】之单网卡-All In One 安装(基于CentOS6.4)
  18. GTK安装
  19. 通向码农的道路(enet开源翻译计划 二)
  20. collections.Counter类统计列表元素出现次数

热门文章

  1. hue集成各种组件
  2. 【eclipse插件开发实战】 Eclipse插件开发5——时间插件Timer开发实例详解
  3. Android studio 集成 Genymotion
  4. 《剑指offer》面试题15—输出链表中倒数第n个结点
  5. Swift异常处理
  6. JavaWeb学习——获取类路径下的资源
  7. BZOJ3289【莫队算法+树状数组+离散化】
  8. HDU2824【欧拉函数性质】
  9. HDU4973 【几何。】
  10. IT兄弟连 JavaWeb教程 JavaBean组件定义