#图# #SPFA# ----- codevs1021 玛丽卡
codevs1021 玛丽卡
题目描述 Description
麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。因为她和他们不住在同一个城市,因此她开始
准备她的长途旅行。在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另
一个城市路上所需花费的时间。麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清
楚到底是哪一条路。无论哪一条路正在维修,从玛丽卡所在的城市都能到达麦克所在的城市。玛丽卡将
只从不堵车的路上通过,并且她将按最短路线行车。麦克希望知道在最糟糕的情况下玛丽卡到达他所在
的城市需要多长时间,这样他就能保证他的女朋友离开该城市足够远。编写程序,帮助麦克找出玛丽卡
按最短路线通过不堵车道路到达他所在城市所需的最长时间(用分钟表示)。
输入描述 Input Description
第一行有两个用空格隔开的数N和M,分别表示城市的数量以及城市间道路的数量。
1≤N≤1000,1≤M≤N*(N-1)/2。城市用数字1至N标识,麦克在城市1中,玛丽卡在城市N中。
接下来的M行中每行包含三个用空格隔开的数A,B和V。其中1≤A,B≤N,1≤V≤1000。
这些数字表示在A和城市B中间有一条双行道,并且在V分钟内是就能通过。
输出描述 Output Description
输出文件的第一行中写出用分钟表示的最长时间,在这段时间中,无论哪条路在堵车,玛丽卡应该能够
到达麦克处,如果少于这个时间的话,则必定存在一条路,该条路一旦堵车,玛丽卡就不能够赶到麦克
处。
样例输入 Sample Input
5 7
1 2 8
1 4 10
2 3 9
2 4 10
2 5 1
3 4 7
3 5 10
样例输出 Sample Output
27
#include<cstdio>
#include<algorithm>
using namespace std; int n,m;
int cnt,start,end,ans;
int head[],q[],dis[],p[];
bool vis[];
struct node{
int u;
int v;
int w;
int next;
}s[]; void add(int x,int y,int z){//建边
s[++cnt].u=x;
s[cnt].v=y;
s[cnt].w=z;
s[cnt].next=head[y];
head[y]=cnt;
} int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);//无向图双向建边
} dis[]=;//1--1 dis=0
vis[]=true;
for(int i=;i<=n;i++) dis[i]=;
q[++start]=;//1进队
end++; while(start<=end){//spfa
for(int i=head[q[start]];i!=;i=s[i].next){
if(dis[q[start]]+s[i].w<dis[s[i].u]){//松弛
dis[s[i].u]=dis[q[start]]+s[i].w;
p[s[i].u]=i;//记录路径
if(vis[s[i].u]==false){//判断是否进队
q[++end]=s[i].u;
vis[s[i].u]=true;
}
}
}
vis[q[start++]]=false;//队首弹出
} ans=max(ans,dis[n]);//不删边的情况下最优解 int t=n,k;
while(t!=){//枚举删除最优路径上那一条边
k=s[p[t]].w;//删边记录删除路径 val
s[p[t]].w=;//相当于删除
if(p[t]&)s[p[t]+].w=;//双向建 双向删
else s[p[t]-].w=;
for(int i=;i<=n;i++){
dis[i]=;
vis[i]=false;
}
for(int i=;i<=end;i++)q[i]=;
dis[]=;
vis[]=true;
start=;
end=;
q[start]=; while(start<=end){//删一边 spfa
for(int i=head[q[start]];i!=;i=s[i].next){
if(dis[q[start]]+s[i].w<dis[s[i].u]){
dis[s[i].u]=dis[q[start]]+s[i].w;
if(vis[s[i].u]==false){
q[++end]=s[i].u;
vis[s[i].u]=true;
}
}
}
vis[q[start++]]=false;
} if(dis[n]!=)ans=max(ans,dis[n]);
s[p[t]].w=k;//复原
if(p[t]&)s[p[t]+].w=k;
else s[p[t]-].w=k;
t=s[p[t]].v;
}
printf("%d",ans);
return ;
}
#图# #SPFA# ----- codevs1021 玛丽卡的更多相关文章
- codevs1021 玛丽卡
题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...
- codevs 1021 玛丽卡(spfa)
题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...
- 洛谷P1186 玛丽卡 spfa+删边
洛谷P1186 玛丽卡http://blog.csdn.net/huihao123456/article/details/73414139题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. ...
- Spfa【p1186】 玛丽卡
Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个 ...
- 习题:玛丽卡(SPFA)
玛丽卡(wikioi1021) [题目描述 ]麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复.因为她和他们不住在同一个城市,因此她开始准备她的长途旅行.在这个国家中每两个城市之间最多只有一条路相通, ...
- P1186 玛丽卡
题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城 ...
- 洛谷——P1186 玛丽卡
P1186 玛丽卡 题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道 ...
- luoguP1186 玛丽卡 x
P1186 玛丽卡 题目描述 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道 ...
- Codevs 1021 (玛丽卡)
题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...
随机推荐
- 转:LoadRunner自带的协议分析工具
在做性能测试的时候,协议分析是困扰初学者的难题,不过优秀的第三方协议分析工具还是挺多的,如:MiniSniffer .Wireshark .Ominpeek 等:当然他们除了帮你分析协议之外,还提供其 ...
- Use View.isInEditMode() in your custom views to skip code when shown in Eclipse
今天在做自定义ViewGroup中,出现了一下错误提示Use View.isInEditMode() in your custom views to skip code when shown in E ...
- Qt5:窗口背景色的设置
在Qt中,设置窗口背景色有多种方法,如通过setStyleSheet 和 调色板 setPalette 等 下面是setPalette 方法 QPalette pale = palette(); ...
- sql server 行转列 Pivot UnPivot
SQL Server中行列转换 Pivot UnPivot 本文转自:张志涛 原文地址: http://www.cnblogs.com/zhangzt/archive/2010/07/29/17878 ...
- mysql 赋给用户权限 grant all privileges on
遇到了 SQLException: access denied for @'localhost' (using password: no) 解决办法 grant all privileges o ...
- spring mvc获取路径参数的几种方式 - 浅夏的个人空间 - 开源中国社区
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- ApexSql Log
网址:https://www.apexsql.com/,可免费试用14天 安装成功后,点击new,配置DB连接: 选择要分析的Log文件: 进行过滤设置: 基本设置:时间,DML和 ...
- Sping--life cycle
bean.xml: 注意, 千万不要后面加上 scope="prototype" <?xml version="1.0" encoding="U ...
- SQL语句详细汇总
SQL语句详细汇总 | 浏览:3061 | 更新:2013-06-10 19:50 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 d ...
- 处理Block中的self问题(Capturing 'self' strongly in this block is likely to lead to a retain cycle)
警告:ARC Retain Cycle Capturing 'self' strongly in this block is likely to lead to a retain cycle 代码: ...