UVA 10039 Railroads
这道题好吧,一开始便是拓扑排序的想法,搞了好久,试了多组测试数据,没错啊,可是没过。。。作孽啊,竟然忘了拓扑不能处理环,白浪费了一晚上。。。
只好用动态规划了。。
DP【time】【city】表示在time时刻到达city的最迟出发时间,当然,在这个时间不一定到city。
转移方程挺简单,不说你也会。
- #include <iostream>
- #include <cstdio>
- #include <map>
- #include <iomanip>
- #include <string>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- const int MAXN=;
- const int MAXM=;
- const int inf=;
- int head[MAXN];
- struct e{
- int u,v;
- int depart,arrival;
- int next;
- }edge[MAXM];
- int tot,n,m,limit;
- int start_city,des_city;
- string start,destin;
- int timeh[][];
- void addedge(int u,int v,int de,int ar){
- edge[tot].u=u;
- edge[tot].v=v;
- edge[tot].depart=de;
- edge[tot].arrival=ar;
- edge[tot].next=head[u];
- head[u]=tot++;
- }
- void slove(){
- for(int e=head[start_city];e!=-;e=edge[e].next){
- if(edge[e].depart>=limit){
- timeh[edge[e].v][edge[e].arrival]=edge[e].depart;
- }
- }
- for(int i=;i<=;i++){
- for(int j=;j<=n;j++){
- if(timeh[j][i]!=-){
- for(int e=head[j];e!=-;e=edge[e].next){
- if(i<=edge[e].depart){
- timeh[edge[e].v][edge[e].arrival]=max(timeh[edge[e].v][edge[e].arrival],timeh[j][i]);
- }
- }
- }
- }
- }
- for(int i=;i<=;i++){
- if(timeh[des_city][i]!=-){
- cout << "Departure " << setw() << setfill('');
- cout << timeh[des_city][i] << " " << start << endl;
- cout << "Arrival " << setw() << setfill('');
- cout << i << " " << destin << endl;
- return ;
- }
- }
- cout << "No connection" << endl;
- }
- int main(){
- string station,pre,cur;
- int cas=;int T,pretime,curtime,u,v,train;
- scanf("%d",&T);
- while(T--){
- cas++; tot=;
- memset(head,-,sizeof(head));
- memset(timeh,-,sizeof(timeh));
- map<string,int>city;
- scanf("%d",&n);
- for(int i=;i<=n;i++){
- cin>>station;
- city[station]=i;
- }
- scanf("%d",&train);
- while(train--){
- scanf("%d",&m);
- for(int i=;i<=m;i++){
- cin>>curtime>>cur;
- if(i>){
- u=city[pre];
- v=city[cur];
- addedge(u,v,pretime,curtime);
- }
- pre=cur;
- pretime=curtime;
- }
- }
- cin>>limit>>start>>destin;
- start_city=city[start]; des_city=city[destin];
- cout << "Scenario " << cas << endl;
- slove();
- cout << endl;
- }
- return ;
- }
UVA 10039 Railroads的更多相关文章
- (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO
http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...
- ACM训练计划step 1 [非原创]
(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...
- 算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- UVA数学入门训练Round1[6]
UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...
随机推荐
- Tunnel Warfare(树状数组+二分)
http://poj.org/problem?id=2892 题意:输入n,m.n代表数轴的长度,m代表操作数. D x: 摧毁点x Q x: 询问村庄x最左与最右没有被摧毁的点的距离 R :恢复最 ...
- sdut1269 走迷宫(dfs)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1269 连着做了三个基本的dfs,终于弄懂了搜索 ...
- bzoj 3172 单词
3172: [Tjoi2013]单词 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 3937 Solved: 1912[Submit][Status ...
- Nightmare --- 炸弹时间复位
题目大意: 该题为走迷宫,其条件有如下6个: 1, 迷宫用二维数组来表示: 2, 人走动时不能越界,不能在墙上走: 3, 当走到出口时,若剩余时间恰好为0,则失败: 4, 找到炸弹复位装置,若剩余时间 ...
- ROS-URDF-活动关节
前言:介绍活动关节,并使机器人活动起来. 参考自:http://wiki.ros.org/urdf/Tutorials/Building%20a%20Movable%20Robot%20Model%2 ...
- struts2OGNL表达式(三)
OGNL表达式 OGNL对象试图导航语言.${user.addr.name}这种写法就叫对象试图导航.Struts框架使用OGNL作为默认的表达式语言 OGNL不仅仅可以试图导航,支持比EL表达式更加 ...
- 关于Core里的 StartUp里的方法的理解。
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; ...
- 用JSP实现动态交互
一.什么是JSP? 1.在HTML中嵌入Java脚本代码 2.由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码 3.然后将生成的整个页面信息返回给客户端 二.为什么需要基于B/S技术的 ...
- js手机移动端选择插件 mobileSelect.js
一.mobileSelect获取方法 mobileSelect支持单选.多级联动.自定义回调函数.二次渲染.最新版本下载地址[2017-09-21更新]: https://github.com/onl ...
- AdminLTE框架基础布局使用
boxbox-solid:去掉顶部边框线box-headerwith-border:添加头底部边框线 按钮:—— btn btn-default 默认<div class="btn-g ...