2015: [Usaco2010 Feb]Chocolate Giving
时间:2022-05-08
本文章向大家介绍2015: [Usaco2010 Feb]Chocolate Giving,主要内容包括2015: [Usaco2010 Feb]Chocolate Giving、Description、Input、Output、Sample Input、Sample Output、HINT、Source、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
2015: [Usaco2010 Feb]Chocolate Giving
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 269 Solved: 183
Description
Farmer John有B头奶牛(1<=B<=25000),有N(2*B<=N<=50000)个农场,编号1-N,有M(N-1<=M<=100000)条双向边,第i条边连接农场R_i和S_i(1<=R_i<=N;1<=S_i<=N),该边的长度是L_i(1<=L_i<=2000)。居住在农场P_i的奶牛A(1<=P_i<=N),它想送一份新年礼物给居住在农场Q_i(1<=Q_i<=N)的奶牛B,但是奶牛A必须先到FJ(居住在编号1的农场)那里取礼物,然后再送给奶牛B。你的任务是:奶牛A至少需要走多远的路程?
Input
第1行:三个整数:N,M,B。
第2..M+1行:每行三个整数:R_i,S_i和L_i,描述一条边的信息。
第M+2..M+B+1行:共B行,每行两个整数P_i和Q_i,表示住在P_i农场的奶牛送礼物给住在Q_i农场的奶牛。
Output
样例输出:
共B行,每行一个整数,表示住在P_i农场的奶牛送礼给住在Q_i农场的奶牛至少需要走的路程
Sample Input
6 7 3 1 2 3 5 4 3 3 1 1 6 1 9 3 4 2 1 4 4 3 2 2 2 4 5 1 3 6
Sample Output
6 6 10
HINT
Source
题解:继续领略SPFA的强大,就是这样——喵^_^
1 /**************************************************************
2 Problem: 2015
3 User: HansBug
4 Language: Pascal
5 Result: Accepted
6 Time:352 ms
7 Memory:5096 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,t:longint;
18 a:array[0..200000] of point;
19 b,c:array[0..200000] of longint;
20 procedure add(x,y,z:longint);inline;
21 var p:point;
22 begin
23 new(p);p^.g:=y;p^.w:=z;
24 p^.next:=a[x];a[x]:=p;
25 end;
26 procedure spfa(x:longint);inline;
27 var i,j,k,l,f,r:longint;p:point;
28 begin
29 b[1]:=x;f:=1;r:=2;
30 fillchar(c,sizeof(c),0);
31 c[x]:=1;
32 while f<r do
33 begin
34 p:=a[b[f]];
35 while p<>nil do
36 begin
37 if (c[p^.g]=0) or (c[p^.g]>(c[b[f]]+p^.w)) then
38 begin
39 c[p^.g]:=c[b[f]]+p^.w;
40 b[r]:=p^.g;
41 inc(r);
42 end;
43 p:=p^.next;
44 end;
45 inc(f);
46 end;
47 for i:=1 to n do dec(c[i]);
48 end;
49 begin
50 readln(n,m,t);
51 for i:=1 to n do a[i]:=nil;
52 for i:=1 to m do
53 begin
54 readln(j,k,l);
55 add(j,k,l);add(k,j,l);
56 end;
57 spfa(1);
58 for i:=1 to t do
59 begin
60 readln(j,k);
61 writeln(c[j]+c[k]);
62 end;
63 end.
- 区块链技术,如何提升网络安全?
- 趣店推“大白汽车”业务 启用域名dabaiqiche.com
- 糖果吃了那么多,你真的知道比特币分叉是咋回事吗?
- 静息态网络拓扑传输认知任务信息
- MYSQL字符串截取总结:LEFT、RIGHT、SUBSTRING、SUBSTRING
- 如何用Python提取中文关键词?
- 工信部:将加大网络提速降费力度加快百兆宽带普及
- 人工智能AI(5):线性代数之矩阵、线性空间
- iOS开发进阶篇——FRP与ReactiveCocoa的介绍(一)
- 英伟达修改GeForce软件使用条款:禁止在数据中心运行深度学习等应用
- 浅谈几种SLB技术的实现
- 史上最逼真人形机器人堪比健身教练,技能满满还会流汗
- 被监管前的疏忽?互联网金融大面积逾期,中介行为不容忽视
- 达尔文漏算的一步却让它填补,科学家认为人类最初认可的进化论不再适用
- 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 数组属性和方法