3386/1752: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
时间:2022-05-08
本文章向大家介绍3386/1752: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家,主要内容包括3386/1752: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家、Description、Input、Output、Sample Input、Sample Output、HINT、Source、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
3386/1752: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 39 Solved: 14
Description
贝茜在谷仓外的农场上,她想回到谷仓,在第二天早晨农夫约翰叫她起来挤奶之前尽可能多地睡上一觉.由于需要睡个好觉,贝茜必须尽快回到谷仓.农夫约翰的农场上有N(2≤N≤1000)个路标,每一个路标都有唯一的编号(1到N).路标1是谷仓,路标N是贝茜一整天呆在那里的果树园.农场的所有路标之间共有T(1≤T≤2000)条不同长度的供奶牛走的有向小路.贝茜对她识别方向的能力不是很自信,所以她每次总是从一条小路的头走到尾,再以这条路的尾作为下一条路的头开始走. 现给出所有路标之间的小路,要求输出贝茜回到谷仓的最短路程(每组输入数据都保证有解).
Input
第1行:2个整数T和N.
第2到T+1行:每行用空格隔开的三个整数描述一条小路.前两个整数是这条小路的尾和头,
第三个整数是这条小路的长度(不大于100).
Output
一个整数,表示贝茜从路标N到路标1所经过的最短路程
Sample Input
5 5 1 2 20 2 3 30 3 4 20 4 5 20 1 5 100
Sample Output
90 共有5个路标,贝茜可以依次经过路标4,3,2,1到家
HINT
Source
题解:么么哒又是一道双倍经验水题= =(HansBug:还有话说这不是最短路模板题么= =)
按照惯例,我还是贴两个代码,我只笑笑不说话
1 /**************************************************************
2 Problem: 3386
3 User: HansBug
4 Language: Pascal
5 Result: Accepted
6 Time:24 ms
7 Memory:796 kb
8 ****************************************************************/
9
10 type
11 point=^node;
12 node=record
13 g,w:longint;
14 next:point;
15 end;
16 VAR
17 i,j,k,l,m,n,f,r:longint;
18 a:array[0..10000] of point;
19 c,g:array[0..10000] of longint;
20 d:array[0..100000] of longint;
21 p:point;
22 procedure add(x,y,z:longint);
23 var p:point;
24 begin
25 new(p);p^.g:=y;p^.w:=z;p^.next:=a[x];a[x]:=p;
26 end;
27 begin
28 readln(m,n);
29 for i:=1 to n do a[i]:=nil;
30 for i:=1 to m do
31 begin
32 readln(j,k,l);
33 add(j,k,l);add(k,j,l);
34 end;
35 fillchar(g,sizeof(g),0);
36 fillchar(c,sizeof(c),-1);
37 c[1]:=0;f:=1;r:=2;d[1]:=1;g[1]:=1;
38 while f<r do
39 begin
40 p:=a[d[f]];
41 while p<>nil do
42 begin
43 if (c[p^.g]=-1) or (c[p^.g]>(c[d[f]]+p^.w)) then
44 begin
45 c[p^.g]:=c[d[f]]+p^.w;
46 if g[p^.g]=0 then
47 begin
48 g[p^.g]:=1;
49 d[r]:=p^.g;
50 inc(r);
51 end;
52 end;
53 p:=p^.next;
54 end;
55 g[d[f]]:=0;inc(f);
56 end;
57 writeln(c[n]);
58 readln;
59 end.
1 /**************************************************************
2 Problem: 1752
3 User: HansBug
4 Language: Pascal
5 Result: Accepted
6 Time:24 ms
7 Memory:796 kb
8 ****************************************************************/
9
10 type
11 point=^node;
12 node=record
13 g,w:longint;
14 next:point;
15 end;
16 VAR
17 i,j,k,l,m,n,f,r:longint;
18 a:array[0..10000] of point;
19 c,g:array[0..10000] of longint;
20 d:array[0..100000] of longint;
21 p:point;
22 procedure add(x,y,z:longint);
23 var p:point;
24 begin
25 new(p);p^.g:=y;p^.w:=z;p^.next:=a[x];a[x]:=p;
26 end;
27 begin
28 readln(m,n);
29 for i:=1 to n do a[i]:=nil;
30 for i:=1 to m do
31 begin
32 readln(j,k,l);
33 add(j,k,l);add(k,j,l);
34 end;
35 fillchar(g,sizeof(g),0);
36 fillchar(c,sizeof(c),-1);
37 c[1]:=0;f:=1;r:=2;d[1]:=1;g[1]:=1;
38 while f<r do
39 begin
40 p:=a[d[f]];
41 while p<>nil do
42 begin
43 if (c[p^.g]=-1) or (c[p^.g]>(c[d[f]]+p^.w)) then
44 begin
45 c[p^.g]:=c[d[f]]+p^.w;
46 if g[p^.g]=0 then
47 begin
48 g[p^.g]:=1;
49 d[r]:=p^.g;
50 inc(r);
51 end;
52 end;
53 p:=p^.next;
54 end;
55 g[d[f]]:=0;inc(f);
56 end;
57 writeln(c[n]);
58 readln;
59 end.
- C# checked和unchecked详解
- C# 对象相等性判断和同一性判断
- C# foreach循环较for循环的优势与劣势
- React Native 自定义控件专题
- MobX 在 React Native开发中的应用
- Android仿拼多多拼团堆叠头像
- Linq基础知识小记二
- IntelliJ IDEA 中的版本控制介绍(中)
- React Native动画详解
- 小程序实现原理解析
- EF 通过DataAnnotations配置属性和类型
- IntelliJ IDEA 中的版本控制介绍(上)
- EF基础知识小记七(拆分实体到多个表以及拆分表到多个实体)
- Android 进程回收之LowMemoryKiller原理篇
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [Oracle 11g RAC安装]UDEV设置
- Oracle参数(Undo_Retention)
- Oracle基本概念(Undo空间)
- [AWR报告]Buffer Hit %
- [AWR报告]Library Hit %
- [Oracle 9i安装]Redhat 4.8的配置
- [Oracle 9i安装]Oracle软件的安装
- [AWR报告]Latch Hit %
- [Python运维]Python3.6的安装
- [Python运维]cx_Oracle模块的安装
- C#中抽象类与抽象方法的作用与实例
- C++ 基础扫盲(1)
- [Python运维]使用cx_Oracle连接Oracle(高级篇)
- [Python运维]使用Python发送邮件
- [Python运维]自动化监控Oracle表空间并发送报警