hdu1595 最短路问题(dijkstra&&spfa)
find the longest of the shortest
Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2424 Accepted Submission(s): 846
she seeks revenge.Since she doesn't live in the same city, she started
preparing for the long journey.We know for every road how many minutes
it takes to come from one city to another.
Mirko overheard in the
car that one of the roads is under repairs, and that it is blocked, but
didn't konw exactly which road. It is possible to come from Marica's
city to Mirko's no matter which road is closed.
Marica will travel
only by non-blocked roads, and she will travel by shortest route. Mirko
wants to know how long will it take for her to get to his city in the
worst case, so that he could make sure that his girlfriend is out of
town for long enough.Write a program that helps Mirko in finding out
what is the longest time in minutes it could take for Marica to come by
shortest route by non-blocked roads to his city.
case there are two numbers in the first row, N and M, separated by a
single space, the number of towns,and the number of roads between the
towns. 1 ≤ N ≤ 1000, 1 ≤ M ≤ N*(N-1)/2. The cities are markedwith
numbers from 1 to N, Mirko is located in city 1, and Marica in city N.
In
the next M lines are three numbers A, B and V, separated by commas. 1 ≤
A,B ≤ N, 1 ≤ V ≤ 1000.Those numbers mean that there is a two-way road
between cities A and B, and that it is crossable in V minutes.
13
27
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=;
const int INF=0x7fffffff;
int map[maxn][maxn];
bool vis[maxn];
int pre[maxn];
int n,m;
int dis[maxn];
void dijkstra(int start){
for(int i=;i<=n;i++)
dis[i]=INF;
memset(vis,false,sizeof(vis));
dis[]=;
for(int i=;i<=n;i++){
int k=-;
int tmin=INF;
for(int j=;j<=n;j++){
if(!vis[j]&&dis[j]<tmin){
tmin=dis[j];
k=j;
}
} vis[k]=true;
for(int j=;j<=n;j++){
if(map[k][j]!=INF)
if(!vis[j]&&dis[k]+map[k][j]<dis[j]){
dis[j]=dis[k]+map[k][j];
if(start)
pre[j]=k;
}
}
}
} int main(){
while(scanf("%d%d",&n,&m)!=EOF){ for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(i==j)
map[i][j]=;
else
map[i][j]=map[j][i]=INF;
}
} int u,v,w;
for(int i=;i<=m;i++){
scanf("%d%d%d",&u,&v,&w);
map[u][v]=map[v][u]=w;
}
memset(pre,,sizeof(pre));
dijkstra();
int ans=dis[n];
// printf("---->%d\n",ans);
for(int i=n;i!=;i=pre[i]){
int temp=map[i][pre[i]];
map[i][pre[i]]=INF;
map[pre[i]][i]=INF;
dijkstra();
if(dis[n]>ans)
ans=dis[n];
// printf("--->%d\n",temp);
map[i][pre[i]]=temp;
map[pre[i]][i]=temp;
}
printf("%d\n",ans); }
return ;
}
spfa算法实现
#include<stdio.h>
#include<queue>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
using namespace std;
const int MAXN=;
const int INF=0x7fffffff;
struct Edge
{
int v;
int cost;
Edge(int _v=,int _cost=):v(_v),cost(_cost) {}
};
vector<Edge>E[MAXN];
void addedge (int u,int v,int w)
{
E[u].push_back(Edge(v,w));
E[v].push_back(Edge(u,w));
}
bool vis[MAXN];//在队列标志
int dist[MAXN];
int pre[MAXN];
int n,m;
void spfa(int x,int y,int judge)
{
memset(vis,false,sizeof(vis));
for(int i=; i<=n; i++)
dist[i]=INF;
vis[]=true;
dist[]=;
queue<int>que;
while(!que.empty())
que.pop();
que.push();
while(!que.empty())
{
int u=que.front();
que.pop();
vis[u]= false;
for(int i=; i<E[u].size(); i++)
{
int v=E[u][i].v;
if((u==x&&v==y)||(u==y&&v==x))
continue;
if(dist[v]>dist[u]+E[u][i].cost)
{
dist[v]=dist[u]+E[u][i].cost;
if(judge)
pre[v]=u;
if(!vis[v])
{
vis[v]= true;
que.push(v);
}
}
}
} }
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=;i<=n;i++)
E[i].clear();
int u,v,w;
for(int i=;i<=m;i++ ){
scanf("%d%d%d",&u,&v,&w);
addedge(u,v,w);
}
memset(pre,,sizeof(pre));
spfa(,,);
int ans=dist[n];
for(int i=n;i!=;i=pre[i]){
spfa(i,pre[i],);
int temp=dist[n];
if(temp>ans)
ans=temp;
}
printf("%d\n",ans);
}
return ;
}
hdu1595 最短路问题(dijkstra&&spfa)的更多相关文章
- 最短路问题 Floyd+Dijkstra+SPFA
参考博客:https://blog.csdn.net/qq_35644234/article/details/60875818 题目来源:http://acm.hdu.edu.cn/showprobl ...
- POJ 2387 Til the Cows Come Home(最短路 Dijkstra/spfa)
传送门 Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 46727 Acce ...
- 怒学三算法 POJ 2387 Til the Cows Come Home (Bellman_Ford || Dijkstra || SPFA)
Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33015 Accepted ...
- 图上最短路(Dijkstra, spfa)
单源最短路径 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来 ...
- hdu 2066 ( 最短路) Floyd & Dijkstra & Spfa
http://acm.hdu.edu.cn/showproblem.php?pid=2066 今天复习了一下最短路和最小生成树,发现居然闹了个大笑话-----我居然一直写的是Floyd,但我自己一直以 ...
- 几个小模板:topology, dijkstra, spfa, floyd, kruskal, prim
1.topology: #include <fstream> #include <iostream> #include <algorithm> #include & ...
- dijkstra spfa prim kruskal 总结
最短路和最小生成树应该是很早学的,大家一般都打得烂熟,总结一下几个问题 一 dijkstra O((V+E)lgV) //V节点数 E边数 dijkstra不能用来求最长路,因为此时局部最优解已经 ...
- HDU Today HDU杭电2112【Dijkstra || SPFA】
http://acm.hdu.edu.cn/showproblem.php?pid=2112 Problem Description 经过锦囊相助,海东集团最终度过了危机,从此.HDU的发展就一直顺风 ...
- find the safest road HDU杭电1596【Dijkstra || SPFA】
pid=1596">http://acm.hdu.edu.cn/showproblem.php?pid=1596 Problem Description XX星球有非常多城市,每一个城 ...
随机推荐
- Windows Azure 配置Active Directory 主机(2)
前一篇概况给大家介绍了,在云端部署一台DC 需要满足一些条件,接下来进入正题,云端VM安装域控制器具体步骤. 步骤1 :验证 主DC 的静态 IP 地址 1.登录到 Corp 网络上的 主DC. 2. ...
- Python+selenium之下载文件
一.Firefox文件下载 Web容许我们设置默认的文件下载路劲,文件会自动下载并且存放在指定的目录下. from selenium import webdriver import os fp = w ...
- 洛谷 P2424 约数和
题目背景 Smart最近沉迷于对约数的研究中. 题目描述 对于一个数X,函数f(X)表示X所有约数的和.例如:f(6)=1+2+3+6=12.对于一个X,Smart可以很快的算出f(X).现在的问题是 ...
- 前端面试题总结(二)CSS篇
前端面试题总结(二)CSS篇 一.link和@import的区别? link属于HTML标签,可以引入出css以外的事务,如RSS,而@import是css提供的,只能加载css文件. link会在页 ...
- VIM+ctags+cscope用法
使用vim + cscope/ctags,就能够实现Source Insight的功能,可以很方便地查看分析源代码. 关键词: vim, cscope, ctags, tags 1. 查看vi ...
- win10中打开SQL Server 2008 的SQL Server配置管理器方法
win10找不到SQL Server配置管理器 搜索 SQLServerManager10.msc,或者运行文件:“C:\Windows\SysWOW64\SQLServerManager10.msc ...
- 洛谷 P5015 标题统计
第一道题很简单,标签:字符串.模拟. 只需要一个判断去除空格就对了: if(a[i]!=' ' && a[i]!='\n') v++; code: #include<iostre ...
- VUE2.0声明周期钩子:不同阶段不同钩子的开启
- Yii2.0 的安装学习
视频学习地址: 后盾网视频: http://www.houdunren.com/houdunren18_lesson_76?vid=7350 与<Yii框架>不得不说的故事—基础篇 htt ...
- LeetCode(134) Gas Station
题目 There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. ...