1664 清凉冷水

时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
 
 
 
 
题目描述 Description

闷热的夏天,威斯康辛州的奶制品地区提供冷水供奶牛饮用,以此来解渴。农夫约翰将冷水通过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。

输入描述 Input Description

* 第 1 行: 2个用空格隔开的整数 N , C

* 第 2 至 C+1 行: 3个用空格隔开的整数,分别表示连接器的编号,以及连接的2个管道的编号E_i, B1_i, B2_i

输出描述 Output Description

* 共 N 行: 分别表示每个管道到牛棚的最短距离。

样例输入 Sample Input

5 2

3 5 4

1 2 3

样例输出 Sample Output

1

2

2

3

3

数据范围及提示 Data Size & Hint

+------+

| 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 ;
}

最新文章

  1. lua解析赋值类型代码的过程
  2. 为何iPhone6 Plus的逻辑分辨率是2208&#215;1242,屏幕实际分辨率却是1920&#215;1080
  3. C# 调用存储过程操作 OUTPUT参数和Return返回值
  4. LRU Cache [LeetCode]
  5. codeforces mysterious present 最长上升子序列+倒序打印路径
  6. AS3下如何来判断XML属性的是否存在
  7. linux 静态库、共享库
  8. oracle学习系列之三 (约束)
  9. 【BZOJ】【1037】【ZJOI2008】生日聚会party
  10. OC:Block语法、Block使用、Block实现数组排序
  11. compass和sass很好的两篇文章
  12. 剑指Offer:找出数组中出现次数超过一半的元素
  13. Introducing RecyclerView(一)
  14. Web Service学习文旦下载
  15. Dom4j解析Xml文件,Dom4j创建Xml文件
  16. 【分布式锁】redis实现
  17. C#获取特定进程CPU和内存使用率
  18. Interval GCD
  19. 判断一个js对象是不是数组
  20. Gradle 1.12用户指南翻译——第六十四章. 发布到Ivy(新)

热门文章

  1. JAVA类,变量的赋值一个小细节,以及static标注变量的意义
  2. OpenCV 鼠标手动绘制掩码图像
  3. Leetcode:1. Two Sum
  4. 第四课4、ROS客户端
  5. 20. CTF综合靶机渗透(十三)
  6. vivado中使用debug不能连接到vcse_server
  7. Enigma模拟-Python
  8. C++基础之多态性和动态联编
  9. java 使用 spirng 监控 cpu 使用 状态。。。。
  10. Codeforces Round #565 (Div. 3) A. Divide it!