codevs 1664 清凉冷水
1664 清凉冷水
闷热的夏天,威斯康辛州的奶制品地区提供冷水供奶牛饮用,以此来解渴。农夫约翰将冷水通过N (3 <= N <= 99999; N 为奇数)个冷水管道,分别编号序号1..N从泵的位置一直送到牛棚里。当水在管道中流动时,夏天的热能使它变热。贝茜想要找到最冷的水,这样她就能比任何其他奶牛更好地享受这难得的好天气。
她已经绘制了一整套完整的分支管道,并注意到这个管道系统犹如一棵树,它的根在农场,从根开始每个分支都分离出两个管道。令人惊讶的是,所有管道都有一个长度,当然这所有的N根管道连接成1条路或者和其他的管道路线连接。
给出所有管道连接的地图,计算每一个分支点到牛棚的距离。贝茜将通过这些信息来找到最清凉冷水。
管道的端点,可以作为分支点也可以作为管道终点,它以管道的编号命名。地图上包含C (1<= C <= N)个分支器,每个分支器包含3个数据,管道端点E_i (1<= E_i <= N),管道端点连接的两个管道B1_i, B2_i (2<= B1_i <=N; 2<= B2_i <=N)。管道1连接到牛棚,每两个连接器之间的管道长度均为1。
* 第 1 行: 2个用空格隔开的整数 N , C
* 第 2 至 C+1 行: 3个用空格隔开的整数,分别表示连接器的编号,以及连接的2个管道的编号E_i, B1_i, B2_i
* 共 N 行: 分别表示每个管道到牛棚的最短距离。
5 2
3 5 4
1 2 3
1
2
2
3
3
+------+
| Barn |
+------+
| 1
*
2 / \ 3
*
4 / \ 5
分类标签 Tags 点此展开
基本上是裸SPFA但是需要加一下数据处理
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int MAXN=;
const int maxn=0x7fffffff;
struct node
{
int u;
int v;
int w;
int next;
}edge[MAXN];
int num=;
int head[MAXN];
int dis[MAXN];
int vis[MAXN];
void spfa()
{
dis[]=;
vis[]=;
queue<int>q;
q.push();
while(q.size()!=)
{
int p=q.front();
q.pop();
for(int i=head[p];i!=-;i=edge[i].next)
{
int to=edge[i].v;
if(dis[to]>dis[p]+edge[i].w)
{
dis[to]=dis[p]+edge[i].w;
if(vis[to]==)
{
vis[to]=;
q.push(to);
}
}
}
}
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
head[i]=-;
dis[i]=maxn;
}
for(int i=;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
edge[num].u=x;
edge[num].v=y;
edge[num].w=;
edge[num].next=head[x];
head[x]=num++;
edge[num].u=x;
edge[num].v=z;
edge[num].w=;
edge[num].next=head[x];
head[x]=num++;
}
spfa();
for(int i=;i<=n;i++)
{
printf("%d\n",dis[i]+);
}
return ;
}
codevs 1664 清凉冷水的更多相关文章
- T1365 浴火银河星际跳跃 codevs
http://codevs.cn/problem/1365/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小 K 又在玩浴 ...
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
- codevs 1080 线段树点修改
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...
- codevs 1228 苹果树 树链剖分讲解
题目:codevs 1228 苹果树 链接:http://codevs.cn/problem/1228/ 看了这么多树链剖分的解释,几个小时后总算把树链剖分弄懂了. 树链剖分的功能:快速修改,查询树上 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
- codevs 1052 地鼠游戏
1052 地鼠游戏 http://codevs.cn/problem/1052/ 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不 ...
随机推荐
- JavaScript中函数作为值
function myfunc() { // .. } 这是个函数,这样理解, myfunc只是外层作用域的一个变量,指向刚刚声明的function. 也就是说,function本身就是一个值, 就像 ...
- Ansible Playbooks基本使用
你将学到什么 如何使用playbook 如何编写playbook 如何使用roles PlayBook使用 基础环境 ### 64 位 Ubuntu 16.04 LTS,创建CentOS LXC容器w ...
- Exceptionless - .Net Core开源日志框架
Exceptionless - .Net Core开源日志框架 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/11020140 ...
- Spark Checkpoint 概述
有时候,Transformation 的 RDD 非常多或者具体 Transformation 产生的 RDD 本身计算特别复杂和耗时,此时我们必须考虑对计算结果数据进行持久化.与 persist 不 ...
- 2017-9-26 NOIP模拟赛
NOIP 2017 全真模拟冲刺 ---LRH&&XXY 题目名称 那些年 铁路计划 毁灭 题目类型 传统 传统 传统 可执行文件名 years trainfare destroy 输 ...
- 说一说solr在tomcat,jetty上的运行和安装优缺点
本文是我从别的文章中组合而成的,结合自己实际操作进行了修改. Solr是什么 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lu ...
- JNI/NDK开发
公司的新需求终于解决完了,离测试和发布还有段时间,第一次体验了下没需求没bug的感觉,真是舒爽~然后翻了翻有什么可以学的.无意翻到了Android后期发展的五大趋势.一.性能优化.二.高级UI.三.J ...
- windows系统下python2.7.14版本的安装
[前言] 本文主要对window下如何安装Python进行图解说明. [正文] 步骤一 从官网下载相应的版本(本文以2.7.14为例),下载地址:https://www.python.org/down ...
- “戏精少女”的pandas学习之路,你该这么学!No.5
如果文章图片无法观看,请前往CSDN博客观看 https://blog.csdn.net/hihell 戏精博主即将上线 就在上一篇,梦想橡皮擦这位博主经过艰苦的努力 终于能创建一个dataframe ...
- rem 回家测试
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...