UVA12661 有趣的赛车比赛
来源:互联网 发布:php 接口开发安全性 编辑:程序博客网 时间:2024/06/02 13:23
白书上的例题,n个点m条单向边,每条边周期性开放和关闭,时间分别为a,b
求s到t的最短路
首先对于a>cost的边,可以直接删掉
spfa,算dist的时候,加入等待的时间
然后,就没有然后了
写代码越来越模块化(chou)了
#include <queue>#include <cstdio>#include <vector>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 100007;const int INF=0x3f3f3f3f;struct SPFA{ struct Edge{ int from,to,cost,a,b; Edge(){} Edge(int x,int y,int z,int a,int b): from(x),to(y),cost(z),a(a),b(b){} bool canPass(){return a>=cost;}//题目里的 void read(){scanf("%d%d%d%d%d",&from,&to,&a,&b,&cost);} }; int n, m; vector <Edge> edges; vector <int > G[N]; inline void AddEdge(){ Edge e; e.read(); if (!e.canPass())return ; edges.push_back(e); int top = edges.size(); G[e.from].push_back(top-1); } inline void Init(int n,int m){ this -> n = n; this -> m = m; edges.clear(); for (int i=0;i<=n;i++)G[i].clear(); for (int i=1;i<=m;i++) AddEdge(); } bool inq[N]; int d[N],cnt[N]; inline int spfa(int s,int t){ queue<int> Q; memset(inq, 0, sizeof(inq)); memset(cnt, 0, sizeof(cnt)); memset( d ,INF,sizeof( d )); d[s] = 0;inq[s]=1;Q.push(s); for (;!Q.empty();){ int u = Q.front();Q.pop(); inq[u]= 0; for (int i=0;i<G[u].size();i++){ Edge &e = edges[G[u][i]]; int val = d[u],s = d[u] ;// val %= (e.a + e.b);//特殊题目 if (val>e.a) s+=e.b-(val-e.a);// else if (e.a<val+e.cost)s+=e.a+e.b-val;// if (d[u]<INF&&s+e.cost<d[e.to]){ d[e.to] = s + e.cost; if (!inq[e.to]){ Q.push(e.to);inq[e.to] = 1; if (++cnt[e.to]>n)return INF; } } } } return d[t]; }}g;int main(){ //freopen("in.txt","r",stdin); int n,m,s,t; for (int T=0;~scanf("%d%d%d%d",&n,&m,&s,&t);){ g.Init(n,m,s,t); int ans = g.spfa(s,t); printf("Case %d: %d\n",++T,ans); } return 0;}
这波图论挂vjudge上了
http://vjudge.net/contest/107921#overview
密码cww
0 0
- UVA12661 有趣的赛车比赛
- 最短路,Dijkstra(有趣的赛车比赛,uva 12661)
- 有趣的生活,有趣的比赛
- uva12661
- UVA12661
- 2825赛车比赛(nth_element)
- 【水水水】【洛谷 U4566】赛车比赛
- 预告:几个有趣的编程比赛
- 腾讯的一个试题---36辆赛车,6个跑道,最少比赛次数,取得前三名
- 每日一题 No.9 赛车比赛
- 赛车游戏中赛车的物理建模
- uva12661 Dijkstra
- 疯狂的赛车下载
- 谁是最好的赛车
- 赛车游戏的悖论
- 例题11-11 赛车比赛 单源最短路 spfa
- 赛车
- 赛车
- spring基础---- IOC容器
- 软件设计 -- 中介者模式
- storm原理
- Ubuntu下搭建FTP服务器
- 饿了么张雪峰:云服务助力饿了么发展 云计算一定是未来
- UVA12661 有趣的赛车比赛
- iOS 转场动画_NAV_图片缩放效果
- 最小的k个数
- Zabbix-3.0.X 监测服务器硬盘IO状态
- 算法
- 第56篇 PHP运算符相关知识
- 【C语言】判断一个数是不是回文数
- 油田UVA 572
- android中gridview的上拉加载更多