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 ...
随机推荐
- HTTP服务端JSON服务端
HTTP服务端JSON服务端 最后更新日期: 2014-5-18 Author: Kagula 阅读前提: CMake工具的基本使用 内容简介: CPPCMS是个开源Web开发框架,通过它可以很容易 ...
- 查看服务器wwn是否在交换机侧
判断port_state是否为Online状态,是的话,读取出port_name,即为wwn. #!/usr/bin/env python3 # -*- coding: UTF-8 -*- impor ...
- 75.培训管理-培训信息发布 Extjs 页面
1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&quo ...
- java 格式化日期
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); simpleDat ...
- PCB 奥宝LDI 输出自动改周期检测内容
继续完善奥宝LDI输出,在自动更新周期发现前期梳理不过完善或出些从未考虑到的工艺问题, 今天将更改线路周期检测内容整理如下
- 安装Windows包管理工具Chocolatey
1.开始菜单里面用PS的管理员模式打开,执行一下命令. Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object Syste ...
- layui框架 各种小结
首先项目前端采用的是bootstrap和layui弹窗,验证,表格用的是bootstrapTable layui官方地址:http://www.layui.com/ 文档:http://www.lay ...
- UOJ 129/BZOJ 4197 寿司晚宴 状压DP
//By SiriusRen #include <cstdio> #include <algorithm> using namespace std; ; struct Node ...
- dotnet core 发布配置(测试数据库和正式数据库自动切换)
一.起源 在进行项目开发时,常常要求开发环境,测试环境及正式环境的分离,并且不同环境运行的参数都是不一样的,比如监听地址,数据库连接信息等.当然我们把配置信息保存到一个文件中,每次发布的时候,可以先修 ...
- 自己整理的HTML基本标签参考知识
基 本 标 签 创建一个HTML文档 <html></html> 设置文档标题以及其他不在WEB网页上显示的信息 <head></head> ...