问题

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

图1 六度空间示意图

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

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

输入第1行给出两个正整数,分别表示社交网络图的结点数N(1<N≤10​3​​,表示人数)、边数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%

解决方法

BFS+邻接矩阵

这个题的意思就是一个图中,找到六圈之内的点数占总点数的比例.难点在于如何控制这个六层.
BFS这种方法实质上就是在BFS的基础上加了三个指针level,last,tail来控制层数.

#include<iostream>
#include<string.h>
#include<queue>
#define MAXN 10000
using namespace std;
int Nv, Ne;
int Visited[MAXN];
int Graph[MAXN][MAXN];
void CreateGraph()
{cin >> Nv >> Ne;for (int i = 0; i < Ne; i++){int x, y;cin >> x >> y;Graph[x][y] = Graph[y][x] = 1;}
}
int BFS(int i)
{queue<int>q;int cnt = 1,level=0,last=i,tail;//level代表层数,last指向每一圈的最后一个点,tail控制last的更新.Visited[i] = 1;q.push(i);while (!q.empty()){int temp = q.front();q.pop();for (int j =1; j <=Nv; j++){if (!Visited[j] && Graph[temp][j]){Visited[j] = 1;q.push(j);cnt++;tail = j;}}if (temp == last)当弹出来的temp等于last的时候,就需要再往外推一层.{level++;last = tail;}if (level == 6) break;}return cnt;
}
int main()
{CreateGraph();for (int i = 1; i <=Nv; i++){cout << i << ": ";memset(Visited, 0, sizeof(Visited));double rate = BFS(i) * 1.0 / Nv * 100;printf("%.2f%%\n", rate);}return 0;
}

后记

想着用DFS也写一下,后来总是出问题,遂放弃o(╥﹏╥)o.这个题以后也要再重新实现一遍.DFS+BFS和邻接矩阵,邻接表,floyed算法,vector这是网上有的答案,需要学习.

7-7 六度空间 (30分)相关推荐

  1. 7-7 六度空间 (30 分)(BFS遍历详解)(DFS最后一个点过不去)

    7-7 六度空间 (30 分) 一:题目: 六度空间"理论又称作"六度分隔(Six Degrees of Separation)"理论.这个理论可以通俗地阐述为:&quo ...

  2. **06-图3 六度空间 (30 分)**

    06-图3 六度空间 (30 分) "六度空间"理论又称作"六度分隔(Six Degrees of Separation)"理论.这个理论可以通俗地阐述为:&q ...

  3. 7-7 六度空间 (30分)_近30年仅6人生涯总决赛首秀得分30+ 浓眉哥能成下一个吗

    在竞争激烈的总决赛上要想得到高分并不容易,一个球员在第一次站上总决赛的舞台的时候要想得到高分更不容易,即使是强如勒布朗-詹姆斯在个人NBA生涯的总决赛首秀中也只是得到14分而已.近30年NBA历史上仅 ...

  4. 7-7 六度空间 (30分)_现役球员中,谁最可能成下一位30000分先生?3大前十巨星没戏...

    想要在NBA联盟得到3万分有多难?从联盟成立至今的70多年中,总得分超过3万分的球员一共只有7位,他们分别是贾巴尔.马龙.詹姆斯.科比.乔丹.诺维茨基和张伯伦,剩下的强如大鲨鱼.艾弗森都没能完成这一壮 ...

  5. PTA_数据结构与算法_7-7 六度空间 (30分)

    "六度空间"理论又称作"六度分隔(Six Degrees of Separation)"理论.这个理论可以通俗地阐述为:"你和任何一个陌生人之间所间隔 ...

  6. 7-7 六度空间 (30分) 【最短路径(Floyd)】

    题目描述: "六度空间"理论又称作"六度分隔(Six Degrees of Separation)"理论.这个理论可以通俗地阐述为:"你和任何一个陌生 ...

  7. 7-2 六度空间(30 分)

    7-2 六度空间(30 分) "六度空间"理论又称作"六度分隔(Six Degrees of Separation)"理论.这个理论可以通俗地阐述为:" ...

  8. 05-3. 六度空间 (30)

    05-3. 六度空间 (30) 时间限制 1500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard "六度空间"理论又称作"六度 ...

  9. 3分和30分文章差距在哪里?

    好的分析和可视化,可以提供大量的信息,同时兼顾简洁优雅. 今天我们抛开实验设计.方法和工作量等因素,仅从文章最吸引人的图片来讨论3分和30分(顶级)文章差距在哪里? 以2017年8月25日发表在Sci ...

  10. 微生物组:3分和30分文章差距在哪里?

    好的分析和可视化,可以提供大量的信息,同时兼顾简洁优雅. 今天我们抛开实验设计.方法和工作量等因素,仅从文章最吸引人的图片来讨论3分和30分(顶级)文章差距在哪里? 以2017年8月25日发表在Sci ...

最新文章

  1. NB-IoT,你真是太让我失望了
  2. speech codec (G.711, G.723, G.726, G.729, iLBC)
  3. [scala-spark]5. 伴生类和伴生对象
  4. 在SQL 语句批量替换数据库字符串的方法
  5. 组合逻辑与lamda算子的历史 英文
  6. Apache Subversion command line tools下载地址 svn命令行客户端
  7. java权限框架_Java高级工程师必备技术栈-由浅入深掌握Shiro权限框架
  8. python3.7读取csv文件_Python3 读取csv文件
  9. 【备忘】一段用于在论坛上插入Flash内容的JavaScript代码
  10. xml规范及xml解析
  11. SwiftyJSON 对网络请求来的数据进行解析或者转为modul
  12. Spark学习内容介绍
  13. linux 光纤网卡 软路由,联想M720Q、光网卡、Pon stick、Openwrt我的完美软路由折腾记...
  14. Android设备实现语音视频通话
  15. linux云服务器,内存占用率很高解决方法
  16. 【编程测试题】头条校招
  17. 【Windows】联想win10系统截屏快捷键
  18. 【Niagara Vykon N4 】物联网学习 01 Station创建
  19. 使用Quartus II9.0验证74161计数器
  20. 我有好的东西和大家一起分享

热门文章

  1. oracle的多个exclude,记录一下expdp exclude的用法
  2. 一文看懂ARM Cortex-M处理器 ARM Cortex-M 处理器家族介绍和比较
  3. windows平台Emacs单实例原理、设置及右键菜单的添加
  4. Linux重定向console口控制台,Linux重定向console口控制台(Fedora)
  5. Ubuntu18.04grub增加console口输出
  6. 站在商业、技术与人文三叉路口的实体书店
  7. 开机预读快还是不预读快_启用预读为网页浏览提速
  8. android 输入法更换_安卓手机怎么更换输入法-安卓手机切换输入法的方法 - 河东软件园...
  9. 3d模型计算机教室,大学教室3d模型
  10. 非常不错的垃圾删除批处理代码,用了10年不用安装清理软件