fastvj.rainng.com/contest/236779#problem/I
Description:
n个点m条路每条路 l,r,t:表示这条路开l秒,关r秒,通过要t秒,问你车辆从s到t最少要多少秒
Solution:
(刷着最大流突然看到了我亲爱的最短路,真的是我相见恨晚,而且还是这个专题的最后一题,嘿嘿嘿,拿下)
考点就是spfa的松弛操作,dis表示当前到now点的时间,你要判断现在t秒能不能通过下一条路,可以的话松弛就是dis[now] + t,不行的话你得等,等到那个路通了再走,dis[now] + wait + t;
还是比较年轻,存在有的路开通时间小于通过时间,那些边不予考虑!
Code:
#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define inf (1 << 28)
using namespace std;
const int maxn = 5e4 + 5;
const int maxm = 5e4 + 5e3;
struct node{
int to,l,r,t,pre;
}e[maxm];
int id[maxn],cnt;
//spfa
int dis[maxn];
int vis[maxn];
void init()
{
memset(vis,0,sizeof(vis));
memset(id,-1,sizeof(id));
cnt = 0;
}
void add(int from,int to,int l,int r,int t)
{
e[cnt].to = to;
e[cnt].l = l;
e[cnt].r = r;
e[cnt].t = t;
e[cnt].pre = id[from];
id[from] = cnt++;
}
void spfa(int s,int n)
{
for(int i = 0;i <= n;++i)
dis[i] = inf;
dis[s] = 0;
vis[s] = 1;
queue<int> q;
q.push(s); while(q.size())
{
int now = q.front();
q.pop();
for(int i = id[now];~i;i = e[i].pre)
{
int to = e[i].to;
int t = e[i].t;
int l = e[i].l;
int r = e[i].r;
int tot = l + r;
int cost; if((dis[now] % tot) + t <= l)cost = t;
else cost = r + (l - (dis[now] % tot)) + t;
if(dis[to] > dis[now] + cost)
{
dis[to] = dis[now] + cost;
if(!vis[to])
{
vis[to] = 1;
q.push(to);
}
}
}
vis[now] = 0;
}
return;
}
int main()
{
int S,T,n,m;
int cas = 1;
while(~scanf("%d%d%d%d",&n,&m,&S,&T))
{
init();
int from,to,l,r,t;
for(int i = 1;i <= m;++i)
{
scanf("%d%d%d%d%d",&from,&to,&l,&r,&t);
//没考虑到啊!!!!
if(l>=t)
add(from,to,l,r,t);
}
spfa(S,n);
printf("Case %d: %d\n",cas++,dis[T]);
}
return 0;
}
CSU1333最短路问题SPFA的更多相关文章
-
hdu 3790 最短路问题 (spfa练手)
Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Inp ...
-
洛谷10月月赛Round.3
Rank11:260=60+100+100 P2409 Y的积木 题目背景 Y是个大建筑师,他总能用最简单的积木拼出最有创意的造型. 题目描述 Y手上有n盒积木,每个积木有个重量.现在他想从每盒积木中 ...
-
【图论】最短路问题之spfa
写在算法前面: 前向星存图(一个神奇的超越邻接矩阵的存在) 首先讲一下需要定义的一些东西?? 1.head数组:head[点数]:head[i]表示以当前点i为起点的最后一条边(这里的最后指的是编号[ ...
-
最短路问题 Floyd+Dijkstra+SPFA
参考博客:https://blog.csdn.net/qq_35644234/article/details/60875818 题目来源:http://acm.hdu.edu.cn/showprobl ...
-
POJ 3037 Skiing(如何使用SPFA求解二维最短路问题)
题目链接: https://cn.vjudge.net/problem/POJ-3037 Bessie and the rest of Farmer John's cows are taking a ...
-
hdu1595 最短路问题(dijkstra&;&;spfa)
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 ...
-
ACM/ICPC 之 SPFA范例两道(POJ3268-POJ3259)
两道以SPFA算法求解的最短路问题,比较水,第二题需要掌握如何判断负权值回路. POJ3268-Silver Cow Party //计算正逆最短路径之和的最大值 //Time:32Ms Memory ...
-
BZOJ 1001 &; SPFA
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...
-
HDU4725 The Shortest Path in Nya Graph SPFA最短路
典型的最短路问题,但是多了一个条件,就是每个点属于一个layer,相邻的layer移动,如x层移到x+1层需要花费c. 一种显而易见的转化是我把这些边都建出来,但是最后可能会使得边变成O(n^2); ...
随机推荐
-
[BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
[BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 试题描述 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发 ...
-
关于设置anroid系统时间
我最近在做一个项目需要设置android系统时间,设置android 时间往往缺少权限,看到http://blog.csdn.net/kakaxi1o1/article/details/3687278 ...
-
前端学习之回调函数、call方法、apply方法
今天学习的内容比较少,大部分时间是自己在写qq音乐和京东移动端的页面.现在说说今天学到的内容: 首先,回调函数,就是在函数内部中调用另外一个函数, 将一个函数当作参数传给另一个函数,被传的函数叫做回调 ...
-
iOS 开发 中级:UIToolbar,UINavigationBar,UITabBar,UIBarButtonItem,UITabBarItem自定义方法总结
原文: http://blog.csdn.net/songrotek/article/details/8692866?utm_source=tuicool 对于UIToolbar,UINavigat ...
-
python 中函数的参数
一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数 ...
-
axis1客户端调用webservice的通用代码
1.axis1 作为web service 客户端时,调用web service 服务端的通用代码 String url = "http://www.webxml.com.cn/webser ...
-
(收藏)KMP算法的前缀next数组最通俗的解释
我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度. 当然我们可以看到这个算法针对的是子串有对称属性, ...
-
JS左侧菜单-04
<script language="javascript" type="text/javascript"> function HideShow() ...
-
IDEA热部署(一)---解析关键配置。
本编博客转载自:因为自己在研究热部署,包括热部署那些文件,部署实现的包括那些操作.这一块,所以这篇好博客. http://www.mamicode.com/info-detail-1699044.ht ...
-
一种提升连接Dynamics 365性能的方法
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复256或者20170512可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...