[NOIP2010冲刺十三] 逃离遗迹

[NOIP2010冲刺十三] 逃离遗迹

【题目描述】

根据外星人的回信,在遗迹分布着三样道具。当三样道具都拿走后,遗迹就很快自动毁灭,所以必须要在最短时间内离开。遗迹可以看作是由N个房间(编号1..N)和N-l条长度不等通道所组成,并且任意两个房间之间有且只有一条路可以相互到达。现在我们的队员已经在编号为A,B,C的房间内拿到道具,并且准备撤退。由于只有一架直升机,所以只能在一个房间上停留。现在请你决定将直升机停在哪一个房间之上,能够使三人到达该房间的距离之和最短。

【输入格式】

第1行:四个整数N、A、B、C。

第2..N行:每行三个整数u,v,w,表示存在连接房间u,v的通道,长度w。

【输出格式】

第1行:一个整数,表示汇合房间的编号。若存在多个解,输出字典序最小的。

第2行:一个整数,表示三人到该房间距离之和。

【样例输入】

5 3 1 4
3 5 5
4 3 9
4 1 7
1 2 1

【样例输出】

4
16

【提示】

对于50%的数据:1≤N≤1,000。

对于100%的数据:1≤N≤20,000。 1≤A,B,C,u,v<=N且A,B,C不相等;u,v不相等。 1≤w≤1,000。

三遍SPFA

0.000s

rank1毫无压力

 1 #include <queue>
 2 #include <cstdio>
 3 #include <cctype>
 4
 5 const int MAXN=20010;
 6 const int INF=0x3f3f3f3f;
 7
 8 int n,S1,S2,S3;
 9
10 int dis[MAXN],dis2[MAXN],dis3[MAXN];
11
12 bool vis[MAXN];
13
14 struct node {
15     int to;
16     int val;
17     int next;
18 };
19 node e[MAXN<<1];
20
21 int head[MAXN],tot;
22
23 inline void read(int&x) {
24     int f=1;register char c=getchar();
25     for(x=0;!isdigit(c);c==‘-‘&&(f=-1),c=getchar());
26     for(;isdigit(c);x=x*10+c-48,c=getchar());
27     x=x*f;
28 }
29
30 inline void add(int x,int y,int v) {
31     e[++tot].to=y;
32     e[tot].val=v;
33     e[tot].next=head[x];
34     head[x]=tot;
35 }
36
37 void SPFA(int s,int*a) {
38     std::queue<int> Q;
39     for(int i=1;i<=n;++i) vis[i]=false;
40     Q.push(s);
41     a[s]=0;
42     while(!Q.empty()) {
43         int u=Q.front();
44         Q.pop();
45         for(int i=head[u];i;i=e[i].next) {
46             int v=e[i].to;
47             if(a[v]>a[u]+e[i].val) {
48                 a[v]=a[u]+e[i].val;
49                 if(!vis[v]) Q.push(v),vis[v]=true;
50             }
51         }
52     }
53     return;
54 }
55
56 int hh() {
57     freopen("escapeb.in","r",stdin);
58     freopen("escapeb.out","w",stdout);
59     int x,y,z;
60     read(n);read(S1);read(S2);read(S3);
61     for(int i=1;i<n;++i) {
62         read(x);read(y);read(z);
63         add(x,y,z);add(y,x,z);
64     }
65     for(int i=1;i<=n;++i) dis[i]=dis2[i]=dis3[i]=INF;
66     SPFA(S1,dis);SPFA(S2,dis2);SPFA(S3,dis3);
67     int ans=INF,pos;
68     for(int i=1;i<=n;++i)
69       if(ans>dis[i]+dis2[i]+dis3[i]) pos=i,ans=dis[i]+dis2[i]+dis3[i];
70     printf("%d\n%d\n",pos,ans);
71     return 0;
72 }
73
74 int sb=hh();
75 int main() {;}

代码

时间: 2024-10-10 16:20:01

[NOIP2010冲刺十三] 逃离遗迹的相关文章

luogu cogs 油滴扩展

1076. [NOIP2010冲刺六] 油滴扩展 ★   输入文件:oilbox.in   输出文件:oilbox.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] 在一个长方形框子里,最多有N(O≤N≤6)个相异的点.在其中任何一个点上放一个很小的油滴(即半径可视为0),那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴.那么应该按照怎样的顺序在这N个点上放置油滴,才能使放置完毕后所有油滴占据的总面积最大呢?(不同

【第五组】第十三次冲刺例会纪要 2017/7/26

第十三次冲刺例会纪要 开发小组:Hunger Killer 冲刺经理:衣俊霖 小组成员:张竣杰,董泽昊,赵美,宋寅瑜,徐志国 A:张竣杰 负责部分:管理员界面 昨日所做工作:研究关于下拉列表刷新问题 遇到的问题:尚未解决 今日计划:尝试解决,优化界面 B:衣俊霖 负责部分:注册界面 昨日所做工作:记住密码已实现,优化界面 遇到的问题:构思用户服务的函数 今日计划:写用户服务,写登录后端 C:董泽昊 负责部分:趣味决策 昨日所做工作:图片上传显示解决 遇到的问题:界面急需优化 今日计划:链接真·数

集美大学网络1413第十三次作业成绩(团队八) -- 第二次项目冲刺(Beta阶段)

题目: 团队作业8--第二次项目冲刺(Beta阶段) 团队作业8-成绩:  团队/分值 新加入成员 角色 技术特点 改善的功能. 原因. bug 新增功能. 方法. 如何实现 团队分工改进. 原因 改进的工具. 流程 (leangoo) 冲刺时间计划. 安排 总分  1 2 2 2 1 2 10 六个核桃 1 1.5 1 2 0.5 2 8 NO.NE 1 1.5 1 2 0.5 2 8 六指神功 1 1.5 1 1.5 1 2 8 wt.dll 1 2 1 1 0.5 2 7.5 团队名 日期

不吃怎么会胖呢十三小分队! Alpha冲刺阶段博客目录

Alpha冲刺阶段博客目录 一.Scrum Meeting 会议记录 时间 l链接 内容 评价 第六周 https://www.cnblogs.com/Newtrend1024/p/11788776.html 需求分析 优 第七周 https://www.cnblogs.com/Newtrend1024/p/11788991.html 功能实现 优 二.测试报告 所有问题: 增加了商品展示部分 优化首页布局 增加了物品分类按钮,可以查看更多热门分类 修复部分界面跳转之间的问题 测试计划: 能实现

Sprint第二个冲刺(第十三天)

一.Sprint 计划会议: sprint2计划的功能还没有全部完成,还在实现剩余的两个功能模块,目前工作进展还比较顺利,争取下一个sprint完成剩余的所有目标. 以下是真机测试下的拍照和系统相册取图保存功能实现情况: 二.Sprint周期:   看板:   燃尽图:

冲刺第二十三天

一.进度(宿舍) 明天就要答辩了,可是我们还没有运行出目标上的效果.有点遗憾,不过小伙伴也是尽力了.无论如何,明天答辩加油吧.我们 合作愉快哦,不过不要松懈,因为还有网页设计我们也是parner阿. 二.Sprint Backlog NOT CHECTED OUT CHECK OUT NOTE SPRINT GOAL 1234 1 界面有待改善   1234 1.2(30%) 算法有待修改   1234 1.2(50%) 算法有待修改   1234 1.2(70%) 算法有待修改   1234

软考考前冲刺第十三章UML建模

1.如果一个对象发送了一个同步消息,那么它要等待对方对消息的应答,收到应答后才能继续自己的操作.而发送异步消息的对象不需要等待对方对消息的应答便可以继续自己的操作. 2.部署图描述了一个运行时的硬件结点,以及在这些结点上运行的软件组件的静态视图.部署图显示了系统的硬件,安装在硬件上的软件,以及用于连接异构的机器之间的中间件.因此它是在实施阶段被使用. 3.业务用例其实是对用例思想的一种延续,只是改变了使用场合.用例是从使用者的角度定义"软件系统"的需求.而业务用例不研究"软件

学习进度第十三周

  第十三周 所花时间(包括上课) 16h(4h上课,12课下) 代码量(行) 460 博客量(篇) 4 了解到的知识点 1.这个星期主要进行了一次小水王的编程,回想起来很简单,但当初真的把它想得太复杂了. 明白了用最简单的方法解决问题,哪怕重复部分太多,代码量太多,也是一种好方法,比如这次小水王就是 一连串的if else 就解决了问题. 2.开始了软件工程团队开发的第二阶段的冲刺,明白了蓝牙权限和蓝牙数据传输的方法. 3.在java EE 的实验编程中,学习了MVC 框架,Struts 框架

第十三周学习进度

  第十三周学习进度 代码量 200 博客量 5 时间 15 学到的知识点 软件工程质量的定义与评估,<人月神话>里开发过程中的焦油坑问题 总结:这星期开始进行下一冲刺阶段,自己通过阅读<人月神话>这本书也受到很大的启发,里面提到了我们在开发中会遇到的一些问题,感觉很有帮助.