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. ajax事件(五)

    建立和探索一个简单示例之后,现在可以深入了解XMLHttpRequest对象支持的功能,以及如何在你的请求中使用它们了.起点就是第二级规范里定义的那些额外事件.之前已经使用一个:readystatec ...

  2. scrollwidth ,clientwidth ,offsetwidth 三者的区别

    clientwidth:内容可视区域的宽度 offsetwidth:元素整体宽度 scrollwidth:实际内容的宽度

  3. 【Django】信号调度

    Django中提供了"信号调度",用于在框架执行操作时解耦. 通俗来讲,就是在某些动作发生时,信号允许特定的发送者去提醒一些接受者. * Django内置信号:** Model s ...

  4. HDU 4107 Gangster

    Gangster Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 4 ...

  5. 调用中行接口针对返回报文(xml形式)做相关处理

    最近在对接中行银行接口,在获取返回报文的时候遇到一些问题,现在在这里做个总结 TIP: 在返回报文之前,要对前置机的URL请求,在这期间遇到一个坑,还是通过查看日志才发现问题 在填写转账信息的时候要求 ...

  6. Maven实战(五)——自己主动化Web应用集成測试

    自己主动化集成測试的角色 本专栏的上一篇文章讲述了Maven与持续集成的一些关系及详细实践,我们都知道,自己主动化測试是持续集成不可缺少的一部分,基本上,没有自己主动化測试的持续集成,都非常难称之为真 ...

  7. count 变量的使用

    count:统计出现的次数,当某种情况发生时,执行 +1 的动作,+1 的动作常置于循环体内.基本结构如下: count = 0 while count < vnum and **: ... c ...

  8. 19. Spring Boot Shiro 权限管理

    转自:https://blog.csdn.net/catoop/article/details/50520958

  9. invalid syntax 无效语法

    python用的是spyder编译器, 再出现上一行少了个括号的时候. 在下一行显示有错误.

  10. Codeforces Round #460 (Div. 2) E. Congruence Equation (CRT+数论)

    题目链接: http://codeforces.com/problemset/problem/919/E 题意: 让你求满足 \(na^n\equiv b \pmod p\) 的 \(n\) 的个数. ...