COGS 705——回家

描述 USACO 2.4.4

现在是晚餐时间,而母牛们在外面分散的牧场中。 农民约翰按响了电铃,所以她们开始向谷仓走去。 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛)。 在挤奶的时候(晚餐前),每只母牛都在她自己的牧场上,一些牧场上可能没有母牛。 每个牧场由一条条道路和一个或多个牧场连接(可能包括自己)。 有时,两个牧场(可能是字母相同的)之间会有超过一条道路相连。 至少有一个牧场和谷仓之间有道路连接。 因此,所有的母牛最后都能到达谷仓,并且母牛总是走最短的路径。 当然,母牛能向着任意一方向前进,并且她们以相同的速度前进。 牧场被标记为‘a‘..‘z‘和‘A‘..‘Y‘,在用大写字母表示的牧场中有一只母牛,小写字母中则没有。 谷仓的标记是‘Z‘,注意没有母牛在谷仓中。

注意‘m‘和‘M‘不是同一个牧场 否则错误 上面的意思是说:输入数据中可能会同时存在M,m(郁闷ing),比如

M a a m m z

格式

PROGRAM NAME: comehome

INPUT FORMAT

第 1 行: 整数 P(1<= P<=10000),表示连接牧场(谷仓)的道路的数目。

第 2 ..P+1行: 用空格分开的两个字母和一个整数:

被道路连接牧场的标记和道路的长度(1<=长度<=1000)。

SAMPLE INPUT

(file comehome.in)

5
A d 6
B d 3
C e 9
d Z 8
e Z 3

OUTPUT FORMAT

单独的一行包含二个项目: 最先到达谷仓的母牛所在的牧场的标记,和这只母牛走过的路径的长度。

SAMPLE OUTPUT

(file comehome.out)

B 11

显然这是一道最短路的图论题我用的是dijkstra算法:
 1 program p1138;
 2 var
 3   p,n,kk,ii,min:longint;
 4   b,c,kg,i,j,k,ans:char;
 5   a:array[‘A‘..‘z‘,‘A‘..‘z‘] of longint;
 6   d:array[‘A‘..‘z‘] of longint;
 7   f:array[‘A‘..‘z‘] of boolean;
 8 begin
 9 assign(input,‘comehome.in‘);
10 reset(input);
11 assign(output,‘comehome.out‘);
12 rewrite(output);
13   for i:=‘A‘ to ‘z‘ do
14    for j:=‘A‘ to ‘z‘ do
15     if i=j then a[i,j]:=0 else a[i,j]:=maxlongint div 2;
16   readln(p);
17   for ii:=1 to p do
18    begin
19      readln(b,kg,c,kk);
20       if b=c then begin a[b,c]:=0; a[c,b]:=0; end else
21      a[b,c]:=kk;
22      a[c,b]:=kk;
23    end;
24    for i:=‘A‘ to ‘z‘ do
25     begin d[i]:=a[‘Z‘,i]; f[i]:=false; end;
26    f[‘Z‘]:=true;
27    for i:=‘A‘ to ‘z‘ do
28     begin
29       min:=maxlongint; k:=‘ ‘;
30       for j:=‘A‘ to ‘z‘ do
31        if (not f[j]) and (d[j]<min) then
32         begin min:=d[j]; k:=j; end;
33       if (k=‘ ‘) or (min=maxlongint) then break;
34       f[k]:=true;
35       for j:=‘A‘ to ‘z‘ do
36         if (not f[j]) and (d[k]+a[k,j]<d[j]) and (j<>‘Z‘) then d[j]:=d[k]+a[k,j];
37     end;
38    min:=maxlongint div 2;
39    for i:=‘A‘ to ‘Y‘ do
40     if d[i]<min then begin min:=d[i]; ans:=i; end;
41   writeln(ans,‘ ‘,d[ans]);
42 end.

可是第七个点怎么也过不去

当我改成:

 1 program p1138;
 2 var
 3   p,n,kk,ii,min:longint;
 4   b,c,kg,i,j,k,ans:char;
 5   a:array[‘A‘..‘z‘,‘A‘..‘z‘] of longint;
 6   d:array[‘A‘..‘z‘] of longint;
 7   f:array[‘A‘..‘z‘] of boolean;
 8 begin
 9 assign(input,‘comehome.in‘);
10 reset(input);
11 assign(output,‘comehome.out‘);
12 rewrite(output);
13   for i:=‘A‘ to ‘z‘ do
14    for j:=‘A‘ to ‘z‘ do
15     if i=j then a[i,j]:=0 else a[i,j]:=maxlongint div 2;
16   readln(p);
17   for ii:=1 to p do
18    begin
19      readln(b,kg,c,kk);
20       if kk<a[b,c] then begin
21      a[b,c]:=kk;
22      a[c,b]:=kk;        end;
23    end;
24    for i:=‘A‘ to ‘z‘ do
25     begin d[i]:=a[‘Z‘,i]; f[i]:=false; end;
26    f[‘Z‘]:=true;
27    for i:=‘A‘ to ‘z‘ do
28     begin
29       min:=maxlongint; k:=‘ ‘;
30       for j:=‘A‘ to ‘z‘ do
31        if (not f[j]) and (d[j]<min) then
32         begin min:=d[j]; k:=j; end;
33       if (k=‘ ‘) or (min=maxlongint) then break;
34       f[k]:=true;
35       for j:=‘A‘ to ‘z‘ do
36         if (not f[j]) and (d[k]+a[k,j]<d[j]) and (j<>‘Z‘) then d[j]:=d[k]+a[k,j];
37     end;
38    min:=maxlongint div 2;
39    for i:=‘A‘ to ‘Y‘ do
40     if d[i]<min then begin min:=d[i]; ans:=i; end;
41   writeln(ans,‘ ‘,d[ans]);
42 end.

20--22行有变动

这并不是说明数据中有超过maxlongint div 2 的距离(这还用你说(#‵′)凸)

而是说明数据有重复边。。

读题要考虑周全。

时间: 2024-08-05 02:26:29

COGS 705——回家的相关文章

[COGS 2066]七十与十七

http://218.28.19.228/cogs/problem/problem.php?pid=2066 [题目描述] 七十君最近爱上了排序算法,于是Ta让十七君给Ta讲冒泡排序. 十七君给七十君讲完了冒泡排序以后,七十君回家苦思冥想,又创造了一种名 为七十排序的算法.下面是这个算法排序一个排列的过程: 首先从左到右扫描每个相邻数对.如果这两个数是逆序的,则将第二个数(也 就是小的数)放在整个排列的开头,其他数位置不变,并把计数器加一.如果 没有逆序的相邻数对了,就说明已经排好序了,算法终止

COGS基本法初稿

COGS基本法 序言 我们COGS人民,为建立更完善的联盟,树立正义,保障网络安宁,提供公共OJ,杜绝极少数恐怖分子对我OJ的破坏行为,并使我们自己和OIER得享自由的幸福,特为COGS制定本基本法. 第一条权利机构 权利机构由老常为领导核心的第一代领导集体及COGS QQ群的元老组成,COGS的权力机构为君主立宪制,其中老常为世袭君主,议会由首相刘易铖,长老王梦迪,内阁大臣张灵犀,外交大臣张子昂.国家工程师李冬麟组成.首相.内阁大臣.外交大臣必须由河南省实验中学有着良好素质和学习水平的学生组成

COGS——T 2739. 凯伦和咖啡

http://www.cogs.pro/cogs/problem/problem.php?pid=2739 ★★☆   输入文件:coffee.in   输出文件:coffee.out   简单对比时间限制:1 s   内存限制:512 MB [题目描述] 为了在上课时保持清醒,凯伦需要一些咖啡.咖啡爱好者凯伦想知道最佳的温度来冲煮完美的咖啡.因此,她花了一些时间阅读几本食谱,其中包括广受好评的“咖啡的艺术”. 她知道有n个食谱,其中第i个食谱建议应当在li和ri度之间冲煮以达到最佳的味道.凯伦

COGS——T 8. 备用交换机

http://www.cogs.pro/cogs/problem/problem.php?pid=8 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接.因电子设备容易损坏,需给通讯点配备备用交换机.但备用交换机数量有限,不能全部配备,只能给部分重要城市配置.于是规定:如果某个城市由于交换机损坏,不仅本城市通讯中断,还造成其它城市通讯中断,则配

COGS——C2098. Asm.Def的病毒

http://www.cogs.pro/cogs/problem/problem.php?pid=2098 ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “这就是我们最新研制的,世界上第一种可持久化动态计算机病毒,‘创世纪’.”方教授介绍道. “哦.”主席面无表情地点点头. “‘创世纪’无法真正杀死透明计算网络,但是可以把它变成傻子.可惜透明计算网络能轻松地辨认出病毒,所以我建议……

春节回家

伴着皎洁的月光独自踏上回家的道路,凌晨的地铁如同专车一般,一人独享整节车厢.今年公司人性化的假期制度让我可以提前回家,错开春运高峰,留下小美一人继续坚守. 地铁行驶在西站换乘站开始感到人流压力,拎着大包小包的行人集体扎堆,也感受到年的气息越来越浓,轻装出行的我可以自如穿行于人流中,在肯德基买了一份早餐短暂候车就检票上车了. 上车后第一时间补觉,车厢内温度适宜一会就睡着了,一个多小时的回笼觉后精神焕发,拿着kindle继续刷书,<时间简史>比较费脑,很多专业词汇增加了阅读的难度,无形中加大了阅读

2017-01-13 写在回家之前

写在回家之前: 姐姐们 突然就想买几个手办 突然就想养点花 和哥几个吃了无数遍的黄记煌 我打乒乓球很菜 很爱我的小外甥女 川大深秋的银杏 彭国华老师给我们上的抽象代数课 2016怎么可能结束在几张照片里呢,可是又太匆忙.

洛谷P1529 回家 Bessie Come Home

P1529 回家 Bessie Come Home 题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛). 在挤奶的时候(晚餐前),每只母牛都在她自己的牧场上,一些牧场上可能没有母牛. 每个牧场由一条条道路和一个或多个牧场连接(可能包括自己). 有时,两个牧场(可能是字母相同的)之间会有超过一条道路相连. 至少有一个牧场和谷仓之间有道路连接. 因此,所有的母牛

想收车回家怎么办?输入目的地,顺路接单回家!

滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里:http://www.cnblogs.com/mfryf/p/4642173.html 打豪车应用:uber详细攻略(附100元优惠码:DL8T6):http://www.cnblogs.com/mfryf/p/4752167.h