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的更多相关文章

  1. hdu 3790 最短路问题 (spfa练手)

    Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的.   Inp ...

  2. 洛谷10月月赛Round.3

    Rank11:260=60+100+100 P2409 Y的积木 题目背景 Y是个大建筑师,他总能用最简单的积木拼出最有创意的造型. 题目描述 Y手上有n盒积木,每个积木有个重量.现在他想从每盒积木中 ...

  3. 【图论】最短路问题之spfa

    写在算法前面: 前向星存图(一个神奇的超越邻接矩阵的存在) 首先讲一下需要定义的一些东西?? 1.head数组:head[点数]:head[i]表示以当前点i为起点的最后一条边(这里的最后指的是编号[ ...

  4. 最短路问题 Floyd+Dijkstra+SPFA

    参考博客:https://blog.csdn.net/qq_35644234/article/details/60875818 题目来源:http://acm.hdu.edu.cn/showprobl ...

  5. POJ 3037 Skiing(如何使用SPFA求解二维最短路问题)

    题目链接: https://cn.vjudge.net/problem/POJ-3037 Bessie and the rest of Farmer John's cows are taking a ...

  6. hdu1595 最短路问题(dijkstra&&spfa)

    find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  7. ACM/ICPC 之 SPFA范例两道(POJ3268-POJ3259)

    两道以SPFA算法求解的最短路问题,比较水,第二题需要掌握如何判断负权值回路. POJ3268-Silver Cow Party //计算正逆最短路径之和的最大值 //Time:32Ms Memory ...

  8. BZOJ 1001 & SPFA

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...

  9. HDU4725 The Shortest Path in Nya Graph SPFA最短路

    典型的最短路问题,但是多了一个条件,就是每个点属于一个layer,相邻的layer移动,如x层移到x+1层需要花费c. 一种显而易见的转化是我把这些边都建出来,但是最后可能会使得边变成O(n^2); ...

随机推荐

  1. spring 自定参数解析器(HandlerMethodArgumentResolver)

    https://blog.csdn.net/u010187242/article/details/73647670

  2. 浏览器虚拟过程IP插件

    浏览器虚拟过程 这是个插件在调用API时候结合使用,比如调用大量IP去点击http://www.opew.cn和http://www.gtev.cn function QMPlugin.gbip() ...

  3. mysql表理解

    4.1 索引组织表 1.在innodb存储引擎中,每张表都有个主键,如果在创建表时没有显式地定义主键,则innodb存储引擎会按如下方式选择或创建主键: ①:首先判断表中是否有非空的唯一索引,如果有, ...

  4. python3安装pcap遇到的问题

    最近想在win7上安装pypcap,遇到了一下问题,现在大概总结一下: 直接使用pip install pypcap,提示pcap.h not found: 网上下载pypcap安装包,运行pytho ...

  5. echarts水球

    教程网址:https://echarts.baidu.com/blog/2017/02/21/echarts-liquidfill-chart-tutorial.html DEMO网址(引入js在di ...

  6. Spring Boot HikariCP 一 ——集成多数据源

    其实这里介绍的东西主要是参考的另外一篇文章,数据库读写分离的. 参考文章就把链接贴出来,里面有那位的代码,简单明了https://gitee.com/comven/dynamic-datasource ...

  7. c#线程池中的异常

    static void Main(string[] args) { //写日志 //使用线程池 ; i < ; i++) { ThreadPool.QueueUserWorkItem(new W ...

  8. redis学习笔记01 — 基本介绍、安装配置及常用命令

    redis--NoSQL的一种 为了解决高并发.高可用.高扩展.大数据存储等一系列问题而产生的数据库解决方案,就是NoSQL NoSQL,非关系型数据库,全名:Not Only Sql,它不能代替关系 ...

  9. WebSocket 实现链接 发送消息

    Websocket 原理浅析地址: https://www.cnblogs.com/yuanyongqiang/articles/10457793.html 直接上代码: myWebSocket.py ...

  10. 大数据学习(二)-------- MapReduce

    前提已经安装好hadoop的hdfs集群,可以查看 https://www.cnblogs.com/tree1123/p/10683570.html Mapreduce是hadoop的运算框架,可以对 ...