给你一个无向图,然后找出当中的最短路,

除去最短路中的随意一条边,看最糟糕的情况下,

新的图中,第一个点到末点的最短路长度是多少。

我的做法是:

首先找出最短路,然后记录路径,

再一条一条边的删,

删一条算一下最短路长度,

之后恢复这条边,删掉下一条边继续算,

以此类推。

看之中最糟糕的情况下,最短路长度是多少,

假设是无穷大则代表最坏情况为不通,按题意输出-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的更多相关文章

  1. 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 ...

  2. hdu 3986 Harry Potter and the Final Battle

    一个水题WA了60发,数组没开大,这OJ也不提示RE,光提示WA...... 思路:先求出最短路,如果删除的边不是最短路上的,那么对结果没有影响,要有影响,只能删除最短路上的边.所以枚举一下最短路上的 ...

  3. 【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 ...

  4. Bridges: The Final Battle

    对修改操作按时间分治,设$solve(l,r,n,m)$为考虑时间在$[l,r]$的修改操作,作用范围是$n$个点,$m$条边的图. 若$l=r$,则暴力Tarjan统计桥边个数即可. 否则提取出$[ ...

  5. [JZOJ6089]【CodeChef 2014 April Challenge】Final Battle of Chef【数据结构】【整体二分】

    Description \(n,q,V\leq 100000,w_i\leq 10^9\) Solution 又是一道大数据结构 由于有一个下取整,这就导致了不同时间的修改值是不能简单的直接加在一起的 ...

  6. 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 ...

  7. 【转】最短路&差分约束题集

    转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...

  8. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  9. 枚举最短路径+SPFA

    Harry Potter and the Final Battle Submit Status Description The final battle is coming. Now Harry Po ...

随机推荐

  1. Chapter 12 外观模式

    外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个模式使得这一子系统更加容易使用. 外观模式三个阶段: 首先,在设计初期阶段,应该要有意识的将不同的两个层分离. 其次,在 ...

  2. Android 修改底部导航栏navigationbar的颜色

    Android 修改底部导航栏navigationbar的颜色 getWindow().setNavigationBarColor(Color.BLUE); //写法一 getWindow().set ...

  3. zk set 方法

    [root@wx03 zook]# cat a4.pl use ZooKeeper; use AnyEvent; use AE; use Data::Dumper; my $zk = ZooKeepe ...

  4. MySQL具体解释(5)-----------函数超全总结

    mysql函数大全   对于针对字符串位置的操作.第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值. 假设str是空字符串,返回0.假设str是NULL,返 ...

  5. 安装Devstack的DNS问题

    所谓的OpenStack一键安装,省去了敲键盘的麻烦,但是卡在中间出了问题也是比较尴尬的 在公司内安装经常会出现卡在下载软件的地方,有时候还会出错 trick就是换一个US的dns,比如8.8.8.8

  6. WinForm 小程序 NotePad

    运行效果: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  7. 高级UIKit-07(AVAudioPlayer)

    [day09-1-AVAudioPlayer]:播放音乐案例 实现多媒体需要准备以下两点: 需要引入一个框架AVFoundation.framework 然后引入#import <AVFound ...

  8. Ajax的三种实现及JSON解析

    本文为学习笔记,属新手文章,欢迎指教!! 本文主要是比较三种实现Ajax的方式,为以后的学习开个头. 准备: 1.  prototype.js 2.  jquery1.3.2.min.js 3.  j ...

  9. poj1573&amp;&amp;hdu1035 Robot Motion(模拟)

    转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接: HDU:pid=1035">http://acm.hd ...

  10. JQuery Datatable Ajax请求两次问题的解决

    最近一个项目中使用JQuery Datatable,用起来比较方便,但在测试过程中,发现当条件改变时,有时查询结果中的数据不正确. 使用FireBug跟踪时,发现在使用Ajax请求时,点击一次搜索按钮 ...