题目

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

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

思路

方法一

最短路径,路径<=6就行

方法二

bfs

代码

方法一

#include<bits/stdc++.h>
using namespace std;
#define MAXN 10001
#define INF 999999
int path[MAXN][MAXN];// floyd
int main()
{int n, m; cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++)path[i][j] = INF;}for (int i = 0; i < m; i++){int x, y; cin >> x >> y;path[x][y] = 1;path[y][x] = 1;}for (int k = 1; k <= n; k++)  // 中转点{for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){if (path[i][k] + path[k][j] < path[i][j])path[i][j] = path[i][k] + path[k][j];}}}for (int i = 1; i <= n; i++){int res = 0;for (int j = 1; j <= n; j++){if (path[i][j] <= 6)res++;}cout.setf(ios::fixed);cout << i << ':' << ' ' << setprecision(2) << (float)res / (float)n * 100 << '%' << endl;}return 0;
}

方法二

#include<bits/stdc++.h>
using namespace std;
#define MAXN 10001
#define INF 999999
int path[MAXN][MAXN];int n, m;int main()
{cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++)path[i][j] = INF;}for (int i = 0; i < m; i++){int x, y; cin >> x >> y;path[x][y] = 1;path[y][x] = 1;}// 对每个点bfsfor (int i = 1; i <= n; i++){int* q = new int[n + 1];int* depth = new int[n + 1];  // 记录距离memset(depth, INF, sizeof(int) * (n + 1));int* book = new int[n + 1];memset(book, 0, sizeof(int) * (n + 1));int head = 1, tail = 2;q[head] = i;book[i] = 1;depth[i] = 0;while (head<tail){int tmp = q[head];for (int j = 1; j <= n; j++){if (path[tmp][j]==1 && !book[j]){q[tail] = j;book[j] = 1;depth[j] = depth[tmp] + 1;tail++;}}head++;}int res = 0;for (int j = 1; j <= n; j++){if (depth[j] <= 6)res++;}cout.setf(ios::fixed);cout << i << ':' << ' ' << setprecision(2) << (float)res / (float)n * 100 << '%' << endl;// 计算res// 清空bookdelete []q;delete []depth;delete []book;}return 0;
}

2021秋季《数据结构》_EOJ 1091.六度空间相关推荐

  1. 数据结构算法——1091. 六度空间

    题目 输入 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.0 ...

  2. 某大学2021秋季学期Java期末考试范围概述

    某大学2021秋季学期Java期末考试范围概述 Scope of inspection Not test Edition Scope of inspection 第四章 类与对象(三大特征必须掌握,以 ...

  3. 李沐分享斯坦福2021秋季新课:实用机器学习

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:新智元 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 李沐 ...

  4. 美国计算机研究生留学签证时间,美国大学研究生录取结果,美国研究生院录取时间和流程一览!附2021秋季截止日期...

    对于去美国留学申请读书的同学们而言,美国名校往往更受青睐和欢迎.美国大学研究生录取结果,美国留学申请,美国名校可以给你带来什么,下面就跟着小编详细了解下,什么网站可以查询美国大学研究生往年录取信息?谢 ...

  5. 更新第十三讲 2021秋季班学而思培优 二年级三年级四年级五年级数学

    [同步更新第13讲]2021秋季班学而思培优 小学二年级勤思数学 何俞霖 小学三年级勤思数学 王睿 小学四年级勤思数学 王睿 小学五年级勤思数学 刘震宇

  6. 微软 2021 秋季发布会汇总

    微软在 2021 秋季发布会上发布了 8 款设备. 以下是汇总: Surface Pro 8: 边框最窄的 Surface Pro 系列,屏幕由 12.3 英寸增加到 13 英寸,120Hz 高刷新率 ...

  7. 美国计算机硕士申请截止,美国大学研究生录取通知时间,美国研究生院录取时间和流程一览!附2021秋季截止日期...

    对于去美国留学申请读书的同学们而言,美国名校往往更受青睐和欢迎.美国大学研究生录取通知时间,美国留学申请,美国名校可以给你带来什么,下面就跟着小编详细了解下,普渡大学收到录取通知书的时间?,盘点美国研 ...

  8. 三次蝉联!Stratifyd在G2 2021秋季报告中再获“高成长者”荣誉

     点击上方蓝字关注我们  High Performer 近日,全球领先的商业软件评测机构G2公布了2021秋季Grid报告,Stratifyd凭借杰出的客户满意度和市场表现上榜G2文本分析软件类别的& ...

  9. 南开大学 软件学院 计算机网络 2021秋季 复习

    南开大学 软件学院 计算机网络 2021秋季 复习 这是本人根据张圣林老师本学期给的复习ppt总结的,仅供参考 第一章 引言 为什么要选择五层分层 1. 网络协议以及协议目的 为进行网络中的数据交换而 ...

最新文章

  1. Nginx负载均衡的详细配置及使用案例
  2. linux替换包的脚本,Andorid 自动替换logo打包脚本(支持windows和linux)
  3. 字节输出流的续写和换行
  4. 学习笔记 :E1696 C1107 错误提示
  5. iPhone 12 Pro可能加入激光雷达传感器 摄像头布局将调整
  6. Python 练习: 简单角色游戏程序
  7. 修理计算机英语,英语口语对话:修理电脑
  8. BZOJ1010:[HNOI2008]玩具装箱TOY(斜率优化DP)
  9. 需要氪金吗_《死或生6》染发也需要氪金,海外玩家吐槽官方吃相太难看
  10. IDEA采用Debug模式无法启动项目,但是采用普通模式可以正常启动项目
  11. 每日 30 秒 ⏱ 字符编码排雷录
  12. 菜鸟入门Docker
  13. Linux系统使用Tomcat部署项目图片验证码不显示问题
  14. 筷子兄弟--11度青春系列电影之老男孩,相信你会感动!!
  15. 开源资产管理系统SNIPE-IT搭建
  16. [原创]裴讯K3救砖TTL竟然进入openwrt终端无法进入CFE-强力救砖
  17. qt下开发mqtt的访问程序
  18. Android基础教程(十)build.gradle文件
  19. 鸽子学Python 之 Pandas数据分析库
  20. 教你一招避开网盘限速(百度网盘下载助手)

热门文章

  1. Linux系统性能监测工具——CPU
  2. 多元线性回归matlab实现
  3. c#方向联蔚数科一面面经
  4. 文章展示从数据库到前端页面实现部分展示
  5. [APK签名] jarsigner APK V1签名
  6. 蓝牙协议--HFP协议--转
  7. 理解yolov3的anchor、置信度
  8. Egret微信游戏接入
  9. 电脑计算机和用户区分,电脑32位和64位的区别是什么
  10. 程序猿小哥用12万行代码堆出来个「蔡徐坤」!编译竟然还能通过