hdu3986Harry Potter and the Final Battle
给你一个无向图,然后找出当中的最短路,
除去最短路中的随意一条边,看最糟糕的情况下,
新的图中,第一个点到末点的最短路长度是多少。
我的做法是:
首先找出最短路,然后记录路径,
再一条一条边的删,
删一条算一下最短路长度,
之后恢复这条边,删掉下一条边继续算,
以此类推。
看之中最糟糕的情况下,最短路长度是多少,
假设是无穷大则代表最坏情况为不通,按题意输出-1就可以,
否则输出最坏情况下,最短路长度。
我用spfa和链式向前星做的,
代码例如以下:
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
bool flag;
int exp,num_dot,num_side,cnt,pd[1010],ps[1010],die[100010],dis[1010],box[1010];
struct node
{
int to,next,w,co;
}side[100010];
void add(int from,int to,int w)
{
side[cnt].to=to;
side[cnt].w=w;
side[cnt].next=box[from];
box[from]=cnt++;
}
void init()
{
int s,e,w;
cnt=0;
flag=1;
memset(box,-1,sizeof(box));
memset(die,0,sizeof(die));
scanf("%d%d",&num_dot,&num_side);
for(int i=0;i<num_side;i++)
{
scanf("%d%d%d",&s,&e,&w);
side[cnt].co=cnt+1;
add(s,e,w);
side[cnt].co=cnt-1;
add(e,s,w);
}
}
void spfa()
{
int mid;
bool iq[1010];
queue<int>qq;
memset(iq,0,sizeof(iq));
memset(dis,127,sizeof(dis));
dis[1]=0;
qq.push(1);
iq[1]=1;
while(qq.size())
{
mid=qq.front();
qq.pop();
iq[mid]=0;
for(int i=box[mid];i>-1;i=side[i].next)
if(die[i]==0&&dis[side[i].to]>dis[mid]+side[i].w)
{
dis[side[i].to]=dis[mid]+side[i].w;
if(flag)
{
pd[side[i].to]=mid;
ps[side[i].to]=i;
}
if(!iq[side[i].to])
{
iq[side[i].to]=1;
qq.push(side[i].to);
}
}
}
flag=0;
}
int main()
{
int ans;
scanf("%d",&exp);
while(exp--)
{
init();
spfa();
if(dis[num_dot]>50000000)
printf("-1\n");
else
{
ans=0;
for(int i=num_dot;i>1;i=pd[i])
{
die[ps[i]]=1;
die[side[ps[i]].co]=1;
spfa();
ans=max(ans,dis[num_dot]);
die[ps[i]]=0;
die[side[ps[i]].co]=0;
}
if(ans>50000000)
printf("-1\n");
else
printf("%d\n",ans);
}
}
}
hdu3986Harry Potter and the Final Battle的更多相关文章
- hdu 3986 Harry Potter and the Final Battle (最短路径)
Harry Potter and the Final Battle Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65536/6553 ...
- hdu 3986 Harry Potter and the Final Battle
一个水题WA了60发,数组没开大,这OJ也不提示RE,光提示WA...... 思路:先求出最短路,如果删除的边不是最短路上的,那么对结果没有影响,要有影响,只能删除最短路上的边.所以枚举一下最短路上的 ...
- 【Dijstra堆优化】HDU 3986 Harry Potter and the Final Battle
http://acm.hdu.edu.cn/showproblem.php?pid=3986 [题意] 给定一个有重边的无向图,T=20,n<=1000,m<=5000 删去一条边,使得1 ...
- Bridges: The Final Battle
对修改操作按时间分治,设$solve(l,r,n,m)$为考虑时间在$[l,r]$的修改操作,作用范围是$n$个点,$m$条边的图. 若$l=r$,则暴力Tarjan统计桥边个数即可. 否则提取出$[ ...
- [JZOJ6089]【CodeChef 2014 April Challenge】Final Battle of Chef【数据结构】【整体二分】
Description \(n,q,V\leq 100000,w_i\leq 10^9\) Solution 又是一道大数据结构 由于有一个下取整,这就导致了不同时间的修改值是不能简单的直接加在一起的 ...
- Final Battle #1 K题 Fire game
Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows ...
- 【转】最短路&差分约束题集
转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- 枚举最短路径+SPFA
Harry Potter and the Final Battle Submit Status Description The final battle is coming. Now Harry Po ...
随机推荐
- Chapter 12 外观模式
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个模式使得这一子系统更加容易使用. 外观模式三个阶段: 首先,在设计初期阶段,应该要有意识的将不同的两个层分离. 其次,在 ...
- Android 修改底部导航栏navigationbar的颜色
Android 修改底部导航栏navigationbar的颜色 getWindow().setNavigationBarColor(Color.BLUE); //写法一 getWindow().set ...
- zk set 方法
[root@wx03 zook]# cat a4.pl use ZooKeeper; use AnyEvent; use AE; use Data::Dumper; my $zk = ZooKeepe ...
- MySQL具体解释(5)-----------函数超全总结
mysql函数大全 对于针对字符串位置的操作.第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值. 假设str是空字符串,返回0.假设str是NULL,返 ...
- 安装Devstack的DNS问题
所谓的OpenStack一键安装,省去了敲键盘的麻烦,但是卡在中间出了问题也是比较尴尬的 在公司内安装经常会出现卡在下载软件的地方,有时候还会出错 trick就是换一个US的dns,比如8.8.8.8
- WinForm 小程序 NotePad
运行效果: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...
- 高级UIKit-07(AVAudioPlayer)
[day09-1-AVAudioPlayer]:播放音乐案例 实现多媒体需要准备以下两点: 需要引入一个框架AVFoundation.framework 然后引入#import <AVFound ...
- Ajax的三种实现及JSON解析
本文为学习笔记,属新手文章,欢迎指教!! 本文主要是比较三种实现Ajax的方式,为以后的学习开个头. 准备: 1. prototype.js 2. jquery1.3.2.min.js 3. j ...
- poj1573&&hdu1035 Robot Motion(模拟)
转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接: HDU:pid=1035">http://acm.hd ...
- JQuery Datatable Ajax请求两次问题的解决
最近一个项目中使用JQuery Datatable,用起来比较方便,但在测试过程中,发现当条件改变时,有时查询结果中的数据不正确. 使用FireBug跟踪时,发现在使用Ajax请求时,点击一次搜索按钮 ...