题目

1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为“小世界现象(small world phenomenon)”的著名假说,大意是说,任何2个素不相识的人中间最多只隔着6个人,即只用6个人就可以将他们联系在一起,因此他的理论也被称为“六度分离”理论(six degrees of separation)。虽然米尔格兰姆的理论屡屡应验,一直也有很多社会学家对其兴趣浓厚,但是在30多年的时间里,它从来就没有得到过严谨的证明,只是一种带有传奇色彩的假说而已。
Lele对这个理论相当有兴趣,于是,他在HDU里对N个人展开了调查。他已经得到了他们之间的相识关系,现在就请你帮他验证一下“六度分离”是否成立吧。
Input
本题目包含多组测试,请处理到文件结束。
对于每组测试,第一行包含两个整数N,M(0<N<100,0<M<200),分别代表HDU里的人数(这些人分别编成0~N-1号),以及他们之间的关系。
接下来有M行,每行两个整数A,B(0<=A,B<N)表示HDU里编号为A和编号B的人互相认识。
除了这M组关系,其他任意两人之间均不相识。
Output
对于每组测试,如果数据符合“六度分离”理论就在一行里输出"Yes",否则输出"No"。

Sample Input

8 7
0 1
1 2
2 3
3 4
4 5
5 6
6 7
8 8
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 0

Sample Output

Yes
Yes

题意:有一个假说是这样的,任意两个素不相识的人之间最多只隔着六个人,意思就是最多用六个人就能把他们联系在一起,题中第一行给出了两个数n和m,n代表有n个人m代表有m行两个人互相认识,求这些人符不符合这个假说。

思路:我们可以这样想,让任意两个认识的人(例如a,b)之间的路程为1,这样从a到b要走的长度为1,然后这个题就变成了·最短路问题。每两个认识的人间距离都为1,这样的在任意两个人之间求一个最短距离,然后找到这些人之间的最大值,如果这个值大于7证明这两个人之间隔了多于六个人了,说明假说不成立,反之成立,这个题可以用五行的弗洛里得算法,因为数据范围小。

代码如下:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{int n,m,t1,t2,t3,k;int inf=99999999;int a[220][220]={0};while(~scanf("%d %d",&n,&m)){int flag=0;memset(a,0,sizeof(a));for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(i==j)a[i][j]=0;elsea[i][j]=inf;}}for(int i=0;i<m;i++){scanf("%d %d",&t1,&t2);a[t1][t2]=a[t2][t1]=1;}for(int k=0;k<n;k++)for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(a[i][j]>a[i][k]+a[k][j])a[i][j]=a[i][k]+a[k][j];}for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[i][j]>7){flag=1;break;}}if(flag)break;}if(flag)printf("No\n");elseprintf("Yes\n");}
}

核心代码

for(int k=0;k<n;k++)for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(a[i][j]>a[i][k]+a[k][j])a[i][j]=a[i][k]+a[k][j];}

指每两个点之间遍历一边,然后求的两点之间的最短路径。

六度分离 (Floyd算法)相关推荐

  1. 六度分离(Floyd算法)

    六度分离(Floyd) 1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为"小世界现象(small world phenomenon)"的著名假说,大意是说,任何2个素 ...

  2. hdu 六度分离 floyd

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1869 题意分析:比较简单的最短路算法,最后只需判断最远两点距离是否大于7即可. /*六度分离Time ...

  3. 数据结构与算法(7-4)最短路径(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)

    目录 一.最短路径概念 二.迪杰斯特拉(Dijkstra)算法(单源最短路径) 1.原理 2.过程 3.代码 三.弗洛伊德(Floyd)算法(多源最短路径) 1.原理 2.存储 3.遍历 4.代码 参 ...

  4. 【POJ/算法】 3259 Wormholes(Bellman-Ford算法, SPFA ,FLoyd算法)

    Bellman-Ford算法 Bellman-Ford算法的优点是可以发现负圈,缺点是时间复杂度比Dijkstra算法高.而SPFA算法是使用队列优化的Bellman-Ford版本,其在时间复杂度和编 ...

  5. 最小环算法求解(Dijkstra算法+Floyd算法)

    方法一: #include<iostream> #include<algorithm> #include<cmath> #include<cstdio> ...

  6. HDU2544(Bellman-ford算法和Floyd算法)

    思路: 1.初始化时将起点 s 到各个顶点 v 的距离 dist(s->v) 赋值为 ∞,dist(s->s) 赋值为 0: 2.后续进⾏最多 n-1 次遍历操作 (n 为顶点个数), 对 ...

  7. 【图论专题】Floyd算法及其扩展应用

    Floyd的拓展应用: 任意两点最短路 传递闭包 找最小环 恰好经过k条边的最短路(倍增) 题目列表: 题目 算法 AcWing 1125. 牛的旅行 任意两点最短路Floyd AcWing 343. ...

  8. 【图论】用一道题从本质上讲清楚Floyd算法

    P1119 [灾后重建] 4 5 1 2 3 4 0 2 1 2 3 1 3 1 2 2 1 4 0 3 5 4 2 0 2 0 1 2 0 1 3 0 1 4 -1 -1 5 4 一道非常好的Flo ...

  9. 图的单源最短路径,Floyd算法(数据结构c++)

    这个算法结构很是简单,但是理解还是有一定的困难,一开始做的时候想不明白,跟着算法自己动手画画就知道这个算法具体是怎么回事了. 时间复杂度是O(N*3) 算法有点动态规划的意思,有两个数组,一个(dis ...

  10. floyd算法_最短路径的算法:Floyd算法

    点击箭头处"蓝色字",关注我们哦!! 算法 最短路径的算法-Floyd算法 ● ○ ● Shortest Path Algorithm - Floyd Algorithm ● ○ ...

最新文章

  1. Linux升级as,Linux AS版 是什么意思?
  2. base64 长度补全
  3. max导出fbx设置_真3D虚拟偶像制作教程——虚拟偶像人物模型导出前的处理
  4. 关于NAND flash的MTD分区与uboot中分区的理解 .
  5. .NET 开源免费图表组件库,Winform,WPF 通用
  6. NYOJ 26 孪生素数问题
  7. Linux——Django 开发环境部署(二)python版本控制器pyenv
  8. php 带$字符处理,thinkphp中的特殊字符处理
  9. 电路故障检测与调试分析
  10. 即时通讯源码php开源版下载附安装教程+演示
  11. linux vnc共享时权限设置,用VNC实现远程桌面共享(支持Windows, Linux, ...) - 易水博客...
  12. 产品设计(1):开源产品设计工具pencil
  13. IPTV知识科普全面,什么是IPTV?IPTV架构部署
  14. NIOS II——PIO寄存器分析及使用
  15. 关于微信小程序自定义交易组件升级处理的相关问题,及解决思路
  16. 基于深度学习的时间序列分类[含代码]
  17. 爬虫干货 | 爬虫IP代理模块介绍及实战
  18. APP应用分发平台分析(一)
  19. Coursera | Python for Everybody专项课程
  20. 共建“医疗合规科技实验室”,美创科技实力护航医疗数据安全

热门文章

  1. poj1008(Maya Calendar)玛雅历(c++实现)
  2. android棒棒糖,Android L正式定名Lollipop(棒棒糖)
  3. 最小采样频率计算公式_【白皮书】多路复用和采样理论
  4. 莫让“专业对口”俘虏了你
  5. 如何关闭谷歌浏览器Google Chrome的阅读清单功能
  6. 一些wincap函数说明
  7. Temami防辐射服为爱起航
  8. Format函数详解
  9. python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口...
  10. 【Paper-Attack】Graph Universal Adversarial Attacks: A Few Bad Actors Ruin Graph Learning Models