2021秋季《数据结构》_EOJ 1091.六度空间
题目
“六度空间”理论又称作“六度分隔(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.六度空间相关推荐
- 数据结构算法——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 ...
- 某大学2021秋季学期Java期末考试范围概述
某大学2021秋季学期Java期末考试范围概述 Scope of inspection Not test Edition Scope of inspection 第四章 类与对象(三大特征必须掌握,以 ...
- 李沐分享斯坦福2021秋季新课:实用机器学习
点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:新智元 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 李沐 ...
- 美国计算机研究生留学签证时间,美国大学研究生录取结果,美国研究生院录取时间和流程一览!附2021秋季截止日期...
对于去美国留学申请读书的同学们而言,美国名校往往更受青睐和欢迎.美国大学研究生录取结果,美国留学申请,美国名校可以给你带来什么,下面就跟着小编详细了解下,什么网站可以查询美国大学研究生往年录取信息?谢 ...
- 更新第十三讲 2021秋季班学而思培优 二年级三年级四年级五年级数学
[同步更新第13讲]2021秋季班学而思培优 小学二年级勤思数学 何俞霖 小学三年级勤思数学 王睿 小学四年级勤思数学 王睿 小学五年级勤思数学 刘震宇
- 微软 2021 秋季发布会汇总
微软在 2021 秋季发布会上发布了 8 款设备. 以下是汇总: Surface Pro 8: 边框最窄的 Surface Pro 系列,屏幕由 12.3 英寸增加到 13 英寸,120Hz 高刷新率 ...
- 美国计算机硕士申请截止,美国大学研究生录取通知时间,美国研究生院录取时间和流程一览!附2021秋季截止日期...
对于去美国留学申请读书的同学们而言,美国名校往往更受青睐和欢迎.美国大学研究生录取通知时间,美国留学申请,美国名校可以给你带来什么,下面就跟着小编详细了解下,普渡大学收到录取通知书的时间?,盘点美国研 ...
- 三次蝉联!Stratifyd在G2 2021秋季报告中再获“高成长者”荣誉
点击上方蓝字关注我们 High Performer 近日,全球领先的商业软件评测机构G2公布了2021秋季Grid报告,Stratifyd凭借杰出的客户满意度和市场表现上榜G2文本分析软件类别的& ...
- 南开大学 软件学院 计算机网络 2021秋季 复习
南开大学 软件学院 计算机网络 2021秋季 复习 这是本人根据张圣林老师本学期给的复习ppt总结的,仅供参考 第一章 引言 为什么要选择五层分层 1. 网络协议以及协议目的 为进行网络中的数据交换而 ...
最新文章
- Nginx负载均衡的详细配置及使用案例
- linux替换包的脚本,Andorid 自动替换logo打包脚本(支持windows和linux)
- 字节输出流的续写和换行
- 学习笔记 :E1696 C1107 错误提示
- iPhone 12 Pro可能加入激光雷达传感器 摄像头布局将调整
- Python 练习: 简单角色游戏程序
- 修理计算机英语,英语口语对话:修理电脑
- BZOJ1010:[HNOI2008]玩具装箱TOY(斜率优化DP)
- 需要氪金吗_《死或生6》染发也需要氪金,海外玩家吐槽官方吃相太难看
- IDEA采用Debug模式无法启动项目,但是采用普通模式可以正常启动项目
- 每日 30 秒 ⏱ 字符编码排雷录
- 菜鸟入门Docker
- Linux系统使用Tomcat部署项目图片验证码不显示问题
- 筷子兄弟--11度青春系列电影之老男孩,相信你会感动!!
- 开源资产管理系统SNIPE-IT搭建
- [原创]裴讯K3救砖TTL竟然进入openwrt终端无法进入CFE-强力救砖
- qt下开发mqtt的访问程序
- Android基础教程(十)build.gradle文件
- 鸽子学Python 之 Pandas数据分析库
- 教你一招避开网盘限速(百度网盘下载助手)