“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图所示。

{% asset_img Snipaste_2019-11-16_16-42-02.png This is an image %}

“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能够体现社交网络关系的一手数据已经逐渐使得“六度空间”理论的验证成为可能。

假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。

输入格式:

输入第1行给出两个正整数,分别表示社交网络图的结点数N(1<N≤103,表示人数)、边数M(≤33×N,表示社交关系数)。随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个结点的编号(节点从1到N编号)。

输出格式:

对每个结点输出与该结点距离不超过6的结点数占结点总数的百分比,精确到小数点后2位。每个结节点输出一行,格式为“结点编号:(空格)百分比%”。

输入样例:

10 9
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10

输出样例:

1: 70.00%
2: 80.00%
3: 90.00%
4: 100.00%
5: 100.00%
6: 100.00%
7: 100.00%
8: 90.00%
9: 80.00%
10: 70.00%

AC代码

#include<iostream>
#include<vector>
#include<queue>
#include<string.h>using namespace std;typedef pair<int, int> PII;const int N = 1010;int G[N][N], n, m;bool visited[N];int SDS(int i)
{int cnt = 0;int level = 0, last = i, tail = -1;queue<int> q;visited[i] = true;q.push(i);cnt++;while (!q.empty()){int k = q.front();q.pop();for (int j = 1; j <= n; j++){if (j == k)continue;if (!visited[j] && G[k][j]){q.push(j);tail = j;visited[j] = true;cnt++;}}if (k == last){level++;last = tail;}if (level == 6)break;}return cnt;
}int main()
{cin >> n >> m;while (m--){int a, b;scanf("%d%d", &a, &b);G[a][b] = 1;G[b][a] = 1;}for (int i = 1; i <= n; i++){int ret = SDS(i);printf("%d: %.2f", i, (double)ret / n * 100);puts("%");memset(visited, false, sizeof(visited));}return 0;
}

06-图3 六度空间相关推荐

  1. 《数据结构》-图的六度空间理论(二)

    六度空间理论 六度空间 理论又被称作六度分隔(six degree of separation) 理论.这个理论可以通俗的阐述为:你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过六个人 ...

  2. 数据结构之图的创建(邻接表)

    数据结构之图的基本概念中了解了图的基本概念,接下来对图的代码实现进行详解. 邻接无向图 1. 邻接表无向图介绍 邻接表无向图是指通过邻接表表示的无向图. 上面的图G1包含了"A,B,C,D, ...

  3. 八十五、Python | Leetcode数据结构之图和动态规划算法系列

    @Author:Runsen @Date:2020/7/7 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  4. (九)数据结构之“图”

    数据结构之"图" 图是什么 图的常用操作 图的深度/广度优先遍历 什么是深度/广度优先遍历 深度优先遍历算法口诀 广度优先遍历算法口诀 LeetCode:65.有效数字 LeetC ...

  5. python深度优先_python数据结构之图深度优先和广度优先实例详解

    本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...

  6. 数据结构之图的应用:有向无环图

    数据结构之图的应用:有向无环图 思维导图: 有向无环图:(DAG) 解题方法: 例: 思维导图: 有向无环图:(DAG) 解题方法: 例: PS: 当运算顺序不唯一时,最后的有向无环图也不唯一.

  7. 【恋上数据结构】图基础知识介绍

    图 数据结构回顾 图(Graph) 有向图(Directed Graph) 出度.入度 无向图(Undirected Graph) 混合图(Mixed Graph) 简单图.多重图 无向完全图(Und ...

  8. 【数据结构】图(最短路径Dijkstra算法)的JAVA代码实现

    最短路径的概念 最短路径的问题是比较典型的应用问题.在图中,确定了起始点和终点之后,一般情况下都可以有很多条路径来连接两者.而边或弧的权值最小的那一条路径就称为两点之间的最短路径,路径上的第一个顶点为 ...

  9. 大一新生必看,自学必看,里昂详解数据结构之图

    数据结构之图 有幸掌握浅薄知识,不吝分享,保持独立思考,自主学习,共同进步.另求关注,点赞,评论,感谢!(tips:主页有数据结构全部知识点,以及知识点讲解,建立完善的数据结构知识体) 核心算法思想 ...

  10. 数据结构之图:邻接矩阵和邻接表、深度优先遍历和广度优先遍历

    简介 线性表是一种线性结构,除了头结点和尾节点,线性表的每个元素都只有一个前取节点和一个后继节点.而树结构则相较于线性表更加复杂,它描述的关系为数据元素之间的父子关系,也是现实世界父子关系的缩影, 一 ...

最新文章

  1. gin 项目结构_Gin框架 - 项目目录
  2. 反需求函数和边际收益_边际收益
  3. java可以转linux么_Java开发必会的Linux命令(转)
  4. 2021云栖大会丨阿里云发布第四代神龙架构,提供业界首个大规模弹性RDMA加速能力
  5. es Update API
  6. java安卓原生影视APP源码 对接苹果cms后台
  7. USACO / Factorials (简单模拟)
  8. awk文本处理总结(入门,中级,高级)
  9. 使用 show status 命令
  10. Scrapy爬虫框架入门
  11. 第四章(数组) 编程题 1
  12. 苹果电脑取色器怎么用?Mac取色器——为你的设计提提速
  13. jconsole监控tomcat
  14. STM32F4UCOSII移植
  15. 打破“中规中矩”,手机QQ何以萌翻众人?
  16. android传感器摇一摇功能
  17. STM32 USB HID Mouse And Keyboard (guide)
  18. 手把手教你给KEGG pathway图标注颜色
  19. python 3.10不支持torch,因而无法安装和使用cnocr
  20. matlab 中实现读取图像上点坐标并在图片上标记点和将坐标显示出来

热门文章

  1. 5分+细胞器基因组好文!多线南蜥线粒体基因组及比较基因组研究
  2. WinForm——MDI窗体
  3. 利用gretna计算小世界网络属性等图论指标笔记
  4. 电容或电感的电压_测量电容或电感的电路
  5. 为什么python打不开_Python打不开.py文件
  6. MAC下如何解压.bin文件
  7. [windows] win7建立wifi 实现网络共享
  8. 激光SLAM:LOAM-Livox 算法研究(1) -- 功能包编译与验证
  9. win7,win10访问Samba的共享目录提示“登录失败:用户名或密码错误”最终解决方法
  10. 金沙滩51单片机数码管