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 ...
随机推荐
- 最新的QT git代码到code.qt.io/cgit,还有planet.qt.io有许多博客
http://code.qt.io/cgit/ http://planet.qt.io/
- phpmailer发送邮件,可以带附件
先从网上下载phpmailer压缩包 将解压的文件导入到你的项目中 实例 require_once ('PHPMailer/class.phpmailer.php'); //引入phpmailer文件 ...
- 基于visual Studio2013解决C语言竞赛题之0523魔方阵
题目
- mysql HA方案: MHA
mysql-master-ha mysql 做热备和高可用的方法有很多种, 比如: mmm: http://mysql-mmm.org/ mha: https://code.google.com/p/ ...
- Android的BUG(四) - Android app的卡死问题
做android,免不了要去运行一些跑分程序,常用的跑分程序有quadrant(象限),nbench,安兔兔等.作为系统工程师,对这些跑分 程序都非常的不屑,这个只能是一个不客观的参考,但客户都喜欢拿 ...
- Android中使用"running services"查看service进程内存
从Android 2.0开始,在Settings中加入了一个新的activity("Running Services" activity),它用于显示当前运行的每个Services ...
- 利用xshell密钥管理服务器远程登录+VIM dd命令操作之伤之再伤
1.打开Xshell界面,中文界面方便操作,菜单栏:工具——新建用户密钥生成向导 2.密钥类型选择RSA,密钥长度选择2048位,单击下一步继续: 3.很快生成公钥对,单击下一步继续: 4.密钥名称可 ...
- Java数据流格式转换
1 字节流InputStream ->FileInputStreamOutputStream ->FileOutputSt ...
- Android 去掉Activity的跳转动画
startActivity或finish的时候调用一句话即可: overridePendingTransition(0, 0);
- stringstream clear()的疑问 - yuanshuilee的日志 - 网易博客
stringstream clear()的疑问 - yuanshuilee的日志 - 网易博客 stringstream clear()的疑问 2013-09-05 08:43:13| 分类: ...