Time Limit: 1 second

Memory Limit: 128 MB

【问题描述】

病毒问题解决后,神牛们的心灵久久不能平静。他可以从一个程序联想到一些相似的程序。比如从程序1联想到2,从2联想到4,从4联想到6,从6联想到9……就像搜索一样一步一步越陷越深。不过同一种联想他只会联想一次。比如1、2之间他进行了一次联想,那么他不会再重新联想1到2,或2到1。如果他刚开始时想到的程序能够经过联想若干次后联想回到原程序,那不就乱回来了吗?由于神牛马上就要开乱,请在1秒内告诉他,他需要想哪个程序,以便乱回来。 给出一些程序和他们互相联想的关系(如果两个程序A、B有联系,神牛可以从A联想到B,也可以从B联想到A,但A、B之间神牛最多联想一次),请告诉神牛他需要想哪个程序,以便在最短的时间内乱回来,并输出这个最短时间。

【输入格式】

第一行有两个正整数N,M,分别表示程序个数和有多少对程序可以被神牛直接互相联想。 以下M行,每行三个正整数,分别表示一种联想的两端的程序的编号(从1开始),以及进行这种联想所需要的最短时间(≤3500)。

【输出格式】

如果神牛无论如何都再也乱不回来了,输出“He will never come back.”。 如果神牛能够乱回来,请输出神牛会乱多长时间。

【数据规模】

对于100% 的数据,n≤250。

Sample Input1

4 3

1 2 10

1 3 20

1 4 30

Sample Output1

He will never come back.

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=u251

【题解】


for (int k = 1;k <= n;k++)
{
for (int i = 1;i <= k-1;i++)
for (int j = i+1;j <= k-1;j++)
mi = min(mi,dis[i][j]+w[j][k]+w[k][i]);
for (int i = 1;i <= n;i++)
for (int j = 1;j <= n;j++)
dis[i][j] = min(dis[i][j],dis[i][k]+dis[k][j]);
}

mi即为最小环

最小环是基于floyd算法实现的;

因为当k层循环进行到第k层时,任意两点之间通过中间节点1..k-1得到的最短路已经求出来了;

则我们枚举包含节点k的最小环(且除了k号节点外这个环里的其他节点编号都小于k),即dis[i][j(i到j的最短路,注意i到j的最短路不会包括k),然后加上w[j][k]+w[k][i];这样就是一个环形了;然后取最小值,那么就能搞出最小环了;

这里的w数组之所以要另用一个数组是因为如果直接写dis[j][k]+dis[k][i];那么你不能预测j到k的路径或k到i的路径里面会不会包含dis[i][j]中经过的点;如果有这种情况那么就不能称之为环了;

还有就是

        for (int i = 1;i <= k-1;i++)
for (int j = i+1;j <= k-1;j++)
mi = min(mi,dis[i][j]+w[j][k]+w[k][i]);

这里的j层循环必须从i+1开始,不然会出现两个节点直接走过去然后又直接走回来的情况(而题目不允许这样);(题目所给的边是无向边);



【完整代码】

#include <cstring>
#include <cstdio>
#include <iostream>
#include <algorithm>
#define LL long long using namespace std; const LL INF = 1e15;
const int MAXN = 300; int n,m;
LL w[MAXN][MAXN],dis[MAXN][MAXN]; int main()
{
//freopen("F:\\rush.txt","r",stdin);
for (int i = 0;i <= 250;i++)
for (int j = 0;j <= 250;j++)
w[i][j]=dis[i][j] = INF;
cin >>n >> m;
for (int i = 1;i <= m;i++)
{
int x,y;LL z;
cin >> x >> y >> z;
w[x][y] = z;
w[y][x] = z;
dis[x][y] = z;
dis[y][x] = z;
}
LL ans = INF;
for (int k = 1;k <= n;k++)
{
for (int i = 1;i <= k-1;i++)
for (int j = i+1;j <= k-1;j++)
ans = min(ans,dis[i][j]+w[j][k]+w[k][i]);
for (int i = 1;i <= n;i++)
for (int j = 1;j <= n;j++)
dis[i][j] = min (dis[i][j],dis[i][k]+dis[k][j]);
}
if (ans >= INF)
puts("He will never come back.");
else
cout << ans <<endl;
return 0;
}

【u251】心灵的抚慰的更多相关文章

  1. NOIP退役记

    10.10 想着自己再过一个月就要退役了,真叫人心酸.想到徐志摩的诗: "悄悄地,我走了,正如我悄悄的来,我挥一挥衣袖,不带走一片云彩." 学了这么久的OI,感觉真的就像诗里讲的一 ...

  2. Atitit s2018.2 s2 doc list on home ntpc.docx  \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat

    Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系  法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别   ...

  3. [SD心灵鸡汤]007.每月一则 - 2015.11

    1.不要因为世界太过复杂,而背叛了你的单纯. 2.人的一生要疯狂一次,无论是为一个人,一段情,一段路途或一个梦想. 3.时间真的很神奇,你永远不知道它会如何改变你.换句话说:以前难吃的蔬菜.苦涩的啤酒 ...

  4. [SD心灵鸡汤]000.每月一则 - 索引

    [SD心灵鸡汤]001.每月一则 - 2015.05 [SD心灵鸡汤]002.每月一则 - 2015.06 [SD心灵鸡汤]003.每月一则 - 2015.07 [SD心灵鸡汤]004.每月一则 - ...

  5. [SD心灵鸡汤]005.每月一则 - 2015.09

    精彩的激励人生的话都是从成功者嘴里说出来的,他们成功的过程我们仅仅知道一二,结果却是名满天下.既然看这个激励语,就是想要成功的人,所以大家好好读懂,然后执行,那么你离成功就不远了! 1.万里寻山历百艰 ...

  6. [SD心灵鸡汤]003.每月一则 - 2015.07

    乔布斯去世了,但他留给世人的财富却很多,值得每个人学习.他是个精力充沛魅力无限的家伙,同时也是一个很会鼓动人心的激励大师,甚至在他的平常对话中,经典的语句也常常脱口而出. 这里摘取了一些他的经典语录, ...

  7. [SD心灵鸡汤]002.每月一则 - 2015.06

    1.用最多的梦面对未来 2.自己要先看得起自己,别人才会看得起你 3.一个今天胜过两个明天 4.要铭记在心:每天都是一年中最美好的日子 5.乐观者在灾祸中看到机会:悲观者在机会中看到灾祸 6.有勇气并 ...

  8. [zt]不到最后一秒你永远不知道结局且震撼你心灵的高端电影

    总有一部电影,让你憋着尿直到看完~~~ http://share.renren.com/share/230538513/17679574169?from=0101090202&shfrom=0 ...

  9. it码农之心灵鸡汤(一)

    到底该怎么面对工作,到底怎么面临人生.到底怎么面临青春,对于打工的人来说这些一直都是心中一直无法解惑的谜团. 对于人们怎样看待工作,以前华为创始人任正非说过:非常多人问我,来公司工作有没有双休?需不须 ...

随机推荐

  1. VS Code 终端显示问题

    一.打开编辑器的终端时候,然后弹出了系统自带的cmd窗口 解决办法: Win+R 输入cmd 打开windows cmd窗口,窗口顶部右键属性,然后取消勾选使用旧版控制台,然后重启编辑器就行了. 二. ...

  2. 【DRF权限】

    目录 权限的详细用法 我们都听过权限,那么权限到底是做什么的呢. 我们都有博客,或者去一些论坛,一定知道管理员这个角色, 比如我们申请博客的时候,一定要向管理员申请,也就是说管理员会有一些特殊的权利, ...

  3. shell项目-分发系统-构建文件分发系统

    shell项目-分发系统-构建文件分发系统 需求背景对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台.所以,自动同步文件是至关重要的. 实 ...

  4. 【2017 Multi-University Training Contest - Team 5】Rikka with Competition

    [Link]: [Description] [Solution] 把所有人的能力从大到小排; 能力最大的肯定可能拿冠军; 然后一个一个地往后扫描; 一旦出现a[i-1]-a[i]>k; 则说明从 ...

  5. 有关cascade的结构体

    /* internal cascade classifier */ typedef struct CvCascadeHaarClassifier { CV_INT_HAAR_CLASSIFIER_FI ...

  6. Android Support 包里到底有什么

    大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 随着 ...

  7. vue移动端上拉加载更多

    LoadMore.vue <template> <div class="load-more-wrapper" @touchstart="touchSta ...

  8. BZOJ2157: 旅游(LCT)

    Description Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间 ...

  9. CentOS 7最小化安装图解

    一.环境介绍: win10 x64安装VMware® Workstation 14 Pro(版本:14.1.2 build-8497320) 二.安装CentOS 1.新建虚拟机 打开虚拟机,主页,创 ...

  10. 【例题 8-4 UVA - 11134】Fabled Rooks

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然把问题分解成两个子问题. x轴和y轴分别做. 即n个点要求第i个点在[li,ri]范围内.(ri<=n) 问是否可行. 按 ...