传送门

因为要随机删除一条边,而枚举所有边肯定会超时,经过发现,先求出一遍最短路,而要删除的边肯定在最短路径上,删除其他的边对最短路没有影响。

所以可以先求出最短路,再枚举删除最短路上的每一条边再求最短路。

——代码

 #include <queue>
#include <cstdio>
#include <cstring>
#include <iostream> using namespace std; const int MAXN = ;
int n, m, cnt, ans, qu, qv;
int head[MAXN], to[MAXN * MAXN], next[MAXN * MAXN], val[MAXN * MAXN], dis[MAXN], pre[MAXN];
bool vis[MAXN], flag;
queue <int> q; inline void add(int x, int y, int z)
{
to[cnt] = y;
val[cnt] = z;
next[cnt] = head[x];
head[x] = cnt++;
} inline void spfa(int u)
{
int i, v;
while(!q.empty()) q.pop();
memset(vis, , sizeof(vis));
memset(dis, / , sizeof(dis));
q.push(u);
dis[u] = ;
while(!q.empty())
{
u = q.front();
q.pop();
vis[u] = ;
for(i = head[u]; i != -; i = next[i])
{
v = to[i];
if((u == qu && v == qv) || (u == qv && v == qu)) continue;
if(dis[v] > dis[u] + val[i])
{
dis[v] = dis[u] + val[i];
if(!flag) pre[v] = u;
if(!vis[v])
{
vis[v] = ;
q.push(v);
}
}
}
}
} int main()
{
int i, x, y, z;
scanf("%d %d", &n, &m);
memset(pre, -, sizeof(pre));
memset(head, -, sizeof(head));
for(i = ; i <= m; i++)
{
scanf("%d %d %d", &x, &y, &z);
add(x, y, z);
add(y, x, z);
}
spfa();
flag = ;
for(i = n; i != -; i = pre[i])
{
qu = i;
qv = pre[i];
spfa();
if(dis[n] != ) ans = max(ans, dis[n]);
}
printf("%d", ans);
return ;
}

最新文章

  1. linux使用心得(持续更新)
  2. 关于背景图相对父容器垂直居中问题 —— vertical-align 和 line-height 之间的区别
  3. datetime与smalldatetime之间的区别
  4. JQuery-Table斑马线
  5. 20145236 《Java程序设计》实验一实验报告
  6. Get familiar with key Frameworks of ios
  7. 从一个简单的Java单例示例谈谈并发 JMM JUC
  8. Android之AppWidget 开发浅析
  9. mysql根据某个字符串拆分表中的字段,然后赋值给另外一个字段
  10. 复习-css元素定位
  11. Oracle数据库分区相干知识点
  12. List根据时间字符串排序
  13. 在PHP中避免一些代码中的坏味道
  14. Tomcat权威指南-读书摘要系列9
  15. 2018/03/31 每日一个Linux命令 之 date
  16. Runtime的基本运用
  17. [PHP]require include
  18. C#中的序列化和反序列化是什么、有什么作用、使用方法详解
  19. 修改Nginx 伪静态Rewrite规则 安装Chevereto
  20. 在springBoot在控制台打印sql语句

热门文章

  1. RHEL 6.5---SVN服务实现过程
  2. sleep与wait的对比
  3. laravel 配置站点域名
  4. 23中java设计模式(1)-- 策略模式
  5. js事件、Js中的for循环和事件的关系、this
  6. flutter基础
  7. JSP 错误处理方法
  8. 用JS检测页面加载的不同阶段状态
  9. Javaweb学习笔记8—DBUtils工具包
  10. Elasticsearch插件清单