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.
- ASP.NET Core的配置(3): 将配置绑定为对象[下篇]
- TensorFlow 深度学习笔记 从线性分类器到深度神经网络
- 微信版12306来了!用12306微信小程序买票靠谱吗
- 无需写try/catch,也能正常处理异常
- “人工智能毁灭人类”是一种末世恐惧传染病
- 有状态(Stateful)应用的容器化
- 实现一些字符串操作标准库函数、解决一些字符串问题
- 外卖陷阱,你入坑了么?
- ASP.NET Core的配置(4):多样性的配置来源[上篇]
- 37 个你必须知道的现代数据中心术语
- Python读书笔记7
- 2017年人工智能在游戏领域打败人类,未来我们将何去何从?
- 3杂再破市场行情 6位数结拍
- 将永久存储添加到Red Hat CDK Kit 3.0
- 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 数组属性和方法
- 将linux终端的输出信息保存到log中
- UNIX网络编程卷1(第三版)一个简单的时间获取服务器的程序
- Python数据分析实战(3)Python实现数据可视化
- xresloader转表工具链增加了一些新功能(map,oneof支持,输出矩阵,基于模板引擎的加载代码生成等)
- 数据结构之树
- UNIX网络编程卷1(第三版)套接字编程简介
- UNIX网络编程卷1(第三版)readn,writen和readline函数
- UNIX网络编程卷1(第三版)基本TCP套接字编程
- Ubuntu下linux映射共享盘到window下方法
- 数据同步写入磁盘:sync
- 惯用的关机命令:shutdown
- 重启、关机:reboot,halt,poweroff
- 使用Docker构建ZooKeeper镜像
- Linux进程间的通信
- 如何使用jMeter对需要CSRF token验证的OData服务进行并发性能测试