暑假训练之记录
ACM/ICPC
PKU 1394 Railroad 题解
最短路径问题。
把每个点出发的所有路都存下
然后每一个点中按每一个路的出发时间降序排序。
然后就做超多遍最短路径就可以了
1
#include
<
stdio.h
>
2
#include
<
map
>
3
#include
<
string
>
4
#include
<
string
.h
>
5
#include
<
stdlib.h
>
6
using
namespace
std;
7
map
<
string
,
int
>
city;
8
struct
C
{
int
to,s,t;}
;
9
C data[
100
][
1000
];
10
int
l[
110
],ans[
110
];
11
char
use[
110
];
12
int
cmp(
const
void
*
elem1,
const
void
*
elem2)
13
{
14
return
((
struct
C
*
)elem2)
->
s
-
((
struct
C
*
)elem1)
->
s;
15
}
16
int
main()
17
{
18
//
freopen("railroad.in","r",stdin);
19
//
freopen("railroad.out","w",stdout);
20
int
SS,TT,n,i,j,k,TTT,TI,s,t,NO,begin,totle,min,KK
=
0
;
21
string
str,S,T;
22
char
name[
1000
],name1[
1000
],name2[
1000
];
23
while
(scanf(
"
%d
"
,
&
n),n)
24
{
25
totle
=
1000000
;
26
memset(l,
0
,
sizeof
(l));
27
city.clear();
28
for
(i
=
0
;i
<
n;i
++
)
29
{
30
scanf(
"
%s
"
,name);
31
str
=
name;
32
city[str]
=
i;
33
}
34
scanf(
"
%d
"
,
&
TTT);
35
while
(TTT
--
)
36
{
37
scanf(
"
%d
"
,
&
TI);
38
scanf(
"
%d%s
"
,
&
s,name);
39
S
=
name;SS
=
city[S];
40
while
(
--
TI)
41
{
42
scanf(
"
%d%s
"
,
&
t,name);
43
T
=
name;TT
=
city[T];
44
data[SS][l[SS]].to
=
TT;
45
data[SS][l[SS]].s
=
s;
46
data[SS][l[SS]].t
=
t;
47
l[SS]
++
;
48
SS
=
TT;s
=
t;
49
}
50
}
51
for
(i
=
0
;i
<
n;i
++
)qsort(data[i],l[i],
sizeof
(C),cmp);
52
/**/
/*
53
for(i=0;i<n;i++)
54
{
55
for(j=0;j<l[i];j++)printf("%d ",data[i][j].s);
56
printf("\n");
57
}
58
*/
59
scanf(
"
%d
"
,
&
s);
60
scanf(
"
%s
"
,
&
name1);S
=
name1;SS
=
city[S];
61
scanf(
"
%s
"
,
&
name2);T
=
name2;TT
=
city[T];
62
for
(i
=
0
;i
<
l[SS];i
++
)
63
{
64
if
(data[SS][i].s
<
s)
break
;
65
memset(use,
0
,
sizeof
(use));
66
memset(ans,
1
,
sizeof
(ans));
67
//
printf("asdasd%d\n",ans[100]);
68
ans[SS]
=
data[SS][i].s;
69
for
(k
=
1
;k
<
n;k
++
)
70
{
71
min
=
1000000
;
72
for
(j
=
0
;j
<
n;j
++
)
73
if
(
!
use[j]
&&
ans[j]
!=
ans[
100
]
&&
ans[j]
<
min)
74
{
75
min
=
ans[j];
76
NO
=
j;
77
}
78
if
(min
==
1000000
)
break
;
79
use[NO]
=
1
;
80
for
(j
=
0
;j
<
l[NO];j
++
)
81
if
(
!
use[data[NO][j].to])
82
{
83
if
(data[NO][j].s
<
ans[NO])
break
;
84
if
(data[NO][j].t
<
ans[data[NO][j].to])ans[data[NO][j].to]
=
data[NO][j].t;
85
}
86
}
87
if
(ans[TT]
<
totle)
88
{
89
begin
=
ans[SS];
90
totle
=
ans[TT];
91
}
92
}
93
printf(
"
Scenario #%d\n
"
,
++
KK);
94
if
(totle
==
1000000
)printf(
"
No connection\n
"
);
95
else
96
{
97
printf(
"
Departure
"
);
98
if
(begin
<
1000
)printf(
"
0
"
);
99
else
if
(begin
<
100
)printf(
"
00
"
);
100
else
if
(begin
<
10
)printf(
"
000
"
);
101
printf(
"
%d
"
,begin);
102
printf(
"
%s\n
"
,name1);
103
printf(
"
Arrival
"
);
104
begin
=
totle;
105
if
(begin
<
1000
)printf(
"
0
"
);
106
else
if
(begin
<
100
)printf(
"
00
"
);
107
else
if
(begin
<
10
)printf(
"
000
"
);
108
printf(
"
%d
"
,begin);
109
printf(
"
%s\n
"
,name2);
110
}
111
printf(
"
\n
"
);
112
113
}
114
}
115
116
posted on 2008-07-18 16:43
gong
阅读(320)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
博客园最新博文
博问
管理
Powered by:
C++博客
Copyright © gong
<
2008年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
导航
C++博客
首页
新随笔
联系
聚合
管理
统计
随笔 - 50
文章 - 0
评论 - 22
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(6)
给我留言
查看公开留言
查看私人留言
随笔档案
2009年7月 (11)
2008年8月 (1)
2008年7月 (38)
搜索
积分与排名
积分 - 29954
排名 - 669
最新评论
1. re: uva :: Programming Challenges :: Chapter 1-10189 - Minesweeper
那个P[8][2]是怎么想到的呢?
--陈泓旭
2. re: TOJ 2870 The K-th City 解题
哥们儿,我才识学浅,不是太理解,你这是dijkstra算法吗? 还是动态规划之类的?
--HereIcan
3. re: TOJ 2870 The K-th City 解题
aaa
--HereIcan
4. re: PKU 3367 Expressions 题解
I think we can help each other,make friends with you.(QQ:1015380720)
--ahshua
5. re: TJU 2094 Reserve Bookshelf 题解
在我们学校的oj上面提交返回错误啊
--夜雨
阅读排行榜
1. Toj Lawrence of Arabia 四边形不等式优化(1643)
2. PKU 1160 Post Office(1405)
3. uva :: Programming Challenges :: Chapter 1-10137 - The Trip(1266)
4. TOJ 2553 Japan (1215)
5. PKU 3370 Halloween treats 题解(1192)
评论排行榜
1. PKU 3337 Expression Evaluator(4)
2. Toj Lawrence of Arabia 四边形不等式优化(4)
3. TOJ 2870 The K-th City 解题(2)
4. PKU 3370 Halloween treats 题解(2)
5. TJU 2094 Reserve Bookshelf 题解(2)