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"。

题解:这个题很明显的多源求最短路径的问题,并且n和m的值都不是很大,可以用Folyd算法,可以抽象成每个的关系都赋权值为1

,判断每几个点之间的距离是否有大于7的,如果有大于7的就可以直接输出定理是错误的,没有则说明是正确的。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define Inf 0x3f3f3f3f using namespace std; int map[1005][1005];
int n,m; void folyd()
{ for(int k=0;k<n;k++)
{
for(int i=0;i<n;i++)
{ for(int j=0;j<n;j++)
{
map[i][j]=min(map[i][k]+map[k][j],map[i][j]);
}
}
} } int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{ memset(map,Inf,sizeof(map));
for(int i=0;i<n;i++)
{
map[i][i]=0;
} for(int t=0;t<m;t++)
{
int u,v;
scanf("%d%d",&u,&v);
map[u][v]=1;
map[v][u]=1;
}
int flag=0;
folyd();
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(map[i][j]>7)
{
flag=1;
}
}
}
if(flag)
{
cout<<"No"<<endl;
}
else
{
cout<<"Yes"<<endl;
}
} return 0;
}

六度分离 (folyd算法)的更多相关文章

  1. Folyd算法(转+适合问题 )

    Folyd算法适合多源最短路的求解问题(时间复杂度(O(n^3)),单源无负权值的问题适合Dijstra(O(n^2)) 小Hi强行装作没听到,继续说道:"这个算法的核心之处在于数学归纳法- ...

  2. ACM: HDU 1869 六度分离-Dijkstra算法

    HDU 1869六度分离 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descri ...

  3. [ACM_模拟] POJ 1094 Sorting It All Out (拓扑排序+Floyd算法 判断关系是否矛盾或统一)

    Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...

  4. 最小生成树(prime算法 & kruskal算法)和 最短路径算法(floyd算法 & dijkstra算法)

    一.主要内容: 介绍图论中两大经典问题:最小生成树问题以及最短路径问题,以及给出解决每个问题的两种不同算法. 其中最小生成树问题可参考以下题目: 题目1012:畅通工程 http://ac.jobdu ...

  5. Folyd + 路径存储

    一.Folyd 算法原理 如果 AB + AC < BC 那么, BC最短路就要经过 A. 在算法进行过程中,应该是 ,B-A 有很多路径,B 代表这些路径权值之和,A-C也有很多路径,C是这些 ...

  6. 算法学习记录-图——最小路径之Floyd算法

    floyd算法: 解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包. 设为从到的只以集合中的节点为中间节点的最短路径的长度. 若最短路径经过 ...

  7. 最短路——Floyd算法

    Folyd算法求最短路 介绍: Folyd算法是用来求带权图中每两点之间的最短路的动态规划算法,(它每次求得的值都可以在后面使用).该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学 ...

  8. POJ 2240 - Arbitrage(bellman_ford & floyd)

    题意: 给出一些货币和货币之间的兑换比率,问是否可以使某种货币经过一些列兑换之后,货币值增加. 举例说就是1美元经过一些兑换之后,超过1美元.可以输出Yes,否则输出No. 分析: 首先我们要把货币之 ...

  9. 关于OI中简单的常数优化

    有些东西借鉴了这里qwq 1.IO(istream/ostream) 输入输出优化 之后能,在赛场上常见的几种输入输出: 输入: $1.cin$ 呵呵,不说什么了,慢的要死.大概$1e8$个数要读1分 ...

随机推荐

  1. DAY16-Django之model

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  2. 使用myeclipse开发Servlet

    1.在myeclipse中创建一个web工程 2.在src目录下建立一个包并建立一个Servlet(myeclipse会自把Servlet映射到web.xml文件中) 3.发布工程,实际上就是把web ...

  3. 【整理】使用AIDL跨进程传递复杂对象的实践例子

    首先定义对象类,并实现Parcelable接口,实现接口内的几个方法,看代码,Person.java package com.example.u3.aidltest; import android.o ...

  4. 【总结整理】地理信息系统GIS的基础坐标知识

    关于辰青2018.03.31 1.地理坐标系和投影坐标系的区别 答案: 1.地理坐标系统是一种球面坐标,而投影坐标系统是平面坐标 2.投影坐标系统在二维平面上有恒定的长度.角度和面积 3.投影坐标系统 ...

  5. Codeforces 1136F Cooperative Game (神仙题)

    这种题就是难者不会,会者不难. 博客讲的很详细了 代码: #include <bits/stdc++.h> using namespace std; string s; int read( ...

  6. iOS 打包生成ipa文件(使用终端命令打包)

    1. 打开终端 2.在终端输入cd +空格 把工程文件直接拖到终端,然后回车 3. 在终端输入xcodebuild,回车 然后你可以发现工程文件里多了一个build文件夹 在build文件夹中,有一个 ...

  7. iOS 地图(添加大头针)

    首先在工程中导入MapKit.framework库文件 #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <U ...

  8. bzoj2134 错选单位

    传送门 题目 Input n很大,为了避免读入耗时太多, 输入文件只有5个整数参数n, A, B, C, a1, 由上交的程序产生数列a. 下面给出pascal/C/C++的读入语句和产生序列的语句( ...

  9. Luogu 1450 [HAOI2008]硬币购物

    优美的dp + 容斥. 首先可以不用考虑数量限制,处理一个完全背包$f_{i}$表示用四种面值的硬币购买的方案数,对于每一个询问,我们考虑容斥. 我们的$f_{s}$其实多包含了$f_{s - c_{ ...

  10. struts1和struts2之间的区别

    从action类上分析:1.Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口. 2. Struts 2 Action类可以实现一个Action接 ...