CSU 1333 Funny Car Racing
最短路问题稍微复杂了一点,松弛的时候多判断一些条件就可以了。第一次用SPFA写最短路。
#include<cstdio>
#include<cmath>
#include<cstring>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std; const int maxn = ;
vector<int> cost[maxn][maxn];
vector<int> ljb[maxn];
struct abc{ int start, end, aa, bb, cc; }dt[];
int flag[maxn], dist[maxn];
int n, m, sx, ex; void spfa()
{
int i, ii; flag[sx] = ;
for (i = ; i <= n; i++) dist[i] = 0x7FFFFFFF;
dist[sx] = ;
queue<int>Q; Q.push(sx);
while (!Q.empty())
{
int hh = Q.front(); Q.pop(); flag[hh] = ;
int nowtime = dist[hh];
for (ii = ; ii < ljb[hh].size(); ii++)
{
for (i = ; i < cost[hh][ljb[hh][ii]].size(); i++)
{
int id = cost[hh][ljb[hh][ii]][i];
if (dt[id].aa < dt[id].cc) continue;
int yy = nowtime % (dt[id].aa + dt[id].bb);
if (yy <= dt[id].aa)
{
if (yy + dt[id].cc <= dt[id].aa)
{
if (nowtime + dt[id].cc < dist[ljb[hh][ii]])
{
dist[ljb[hh][ii]] = nowtime + dt[id].cc;
if (!flag[ljb[hh][ii]])Q.push(ljb[hh][ii]), flag[ljb[hh][ii]] = ;
}
}
else
{
if (nowtime + dt[id].aa - yy + dt[id].bb + dt[id].cc < dist[ljb[hh][ii]])
{
dist[ljb[hh][ii]] = nowtime + dt[id].aa - yy + dt[id].bb + dt[id].cc;
if (!flag[ljb[hh][ii]])Q.push(ljb[hh][ii]), flag[ljb[hh][ii]] = ;
}
}
}
else
{
if (nowtime + dt[id].aa + dt[id].bb - yy + dt[id].cc< dist[ljb[hh][ii]])
{
dist[ljb[hh][ii]] = nowtime + dt[id].aa + dt[id].bb - yy + dt[id].cc;
if (!flag[ljb[hh][ii]])Q.push(ljb[hh][ii]), flag[ljb[hh][ii]] = ;
}
}
}
}
}
} int main()
{
int _ = ;
int i, j, u, v, a, b, c;
while (~scanf("%d%d%d%d", &n, &m, &sx, &ex))
{
for (i = ; i <= n; i++) ljb[i].clear();
for (i = ; i <= n; i++) for (j = ; j <= n; j++) cost[i][j].clear();
memset(flag, , sizeof(flag));
for (i = ; i < m; i++)
{
scanf("%d%d%d%d%d", &u, &v, &a, &b, &c);
dt[i].start = u; dt[i].end = v;
dt[i].cc = c; dt[i].aa = a; dt[i].bb = b;
cost[u][v].push_back(i);
ljb[u].push_back(v);
}
spfa();
printf("Case %d: %d\n", _++, dist[ex]);
}
return ;
}
CSU 1333 Funny Car Racing的更多相关文章
- CSU 1333 Funny Car Racing (最短路)
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1333 解题报告:一个图里面有n个点和m条单向边,注意是单向边,然后每条路开a秒关闭b秒 ...
- CSU - 1333 1333: Funny Car Racing(spfa)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1333 这题多了一个限制条件是每一条路都会规律的开放a时间关闭b时间,车子必须在开放的时候进入,在关 ...
- Funny Car Racing CSU - 1333 (spfa)
There is a funny car racing in a city with n junctions and m directed roads. The funny part is: each ...
- Hdu 1052 Tian Ji -- The Horse Racing
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- csu 1812: 三角形和矩形 凸包
传送门:csu 1812: 三角形和矩形 思路:首先,求出三角形的在矩形区域的顶点,矩形在三角形区域的顶点.然后求出所有的交点.这些点构成一个凸包,求凸包面积就OK了. /************** ...
- CSU 1503 点到圆弧的距离(2014湖南省程序设计竞赛A题)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 解题报告:分两种情况就可以了,第一种是那个点跟圆心的连线在那段扇形的圆弧范围内,这 ...
- CSU 1120 病毒(DP)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1120 解题报告:dp,用一个串去更新另一个串,递推方程是: if(b[i] > a ...
- CSU 1116 Kingdoms(枚举最小生成树)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1116 解题报告:一个国家有n个城市,有m条路可以修,修每条路要一定的金币,现在这个国家只 ...
- CSU 1113 Updating a Dictionary(map容器应用)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为 ...
随机推荐
- C语言之if和switch的分别
If和switch的互换规则 用if语句能实现的东西,用switch也可以实现 用switch语句能实现的东西,用if也可以实现 1.如果是判断范围的时候,用switch不太好做,没法直接做 2.如果 ...
- ABAP 通过sumbit调用另外一个程序使用job形式执行-简单例子
涉及到两个程序: ZTEST_ZUMA02 (主程序) ZTEST_ZUMA(被调用的程序,需要以后台job执行) "ztest_zuma 的代码 DATA col TYPE i VALUE ...
- 正则表达式之邮箱验证javascript代码
fuchangxi的正则: 复制代码 代码如下: /^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g 开始必须是一个或者多个单词 ...
- ASP.NET Zero--7.控制器加权限
上次已经实现了菜单权限的配置,达到了不同角色的用户显示不同的菜单.但这里还有BUG,如果你直接访问http://localhost:8019/Mpa/Test这个控制器时,并使用"Defau ...
- UITabelview的删除
删除的效果 Automatic Bottom Fade left middle none right top 简单删除 先删除数据源里的数据,然后再删除cell,否者会报错 let indexPath ...
- 微信小程序入门——怎么建多个项目?(导入官方Demo程序进行学习)
昨天1月9日微信小程序发布,顿时被朋友圈刷爆,今天看了一下官方文档,自己开始一步一步搭建环境体验小程序开发. 常见问题: 1.微信小程序开发是否需要重新创建开发者账号? 需要,即使之前申请了微信服务号 ...
- 【JS学习笔记】函数传参
比如仅仅改变背景的颜色 函数传参:参数就是占位符. 那么在什么时候用传参呢?函数里定不下来的东西. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...
- 【C#】Deep copy of objects
If you learned C++ carefully, you must have known something about the copy of object. For example, I ...
- python 2.7 字符串处理
python 2 字符串处理小结: 字符替换:new_str = old_str.replace(char_old, char_new)--可用于清除字符串中所有的空格 字符分割(正/反):str_n ...
- 第一百二十六节,JavaScript,XPath操作xml节点
第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...