06-图3 六度空间(邻接表练习)(BFS)

BJFU_数据结构习题_274六度空间理论 欢迎登录北京林业大学OJ系统 http://www.bjfuacm.com 274六度空间理论 描述 “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总... 阅读详情
06-图3 六度空间(30 分)

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


图1 六度空间示意图

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

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

输入格式:

输入第1行给出两个正整数,分别表示社交网络图的结点数N(1<N≤10​4​​,表示人数)、边数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 <cstdio>   
#include <iostream> 
#include <algorithm> 
#include <cmath> 
#include <cstdlib> 
#include <cstring> 
#include <vector> 
#include <list> 
#include <map> 
#include <stack> 
#include <queue> 
using namespace std; 
#define ll long long
const int MAX = 10005;
int n,m,sum;
bool visi[MAX];
queue<int> q;
struct edge
{
	int v;
	edge *next;
};
struct AdList
{
	edge *FirstEdge;
};
typedef struct GNode
{
	int Nv;
	int Ne;
	AdList G[MAX];
}*LGNode;
LGNode CreatGraph()
{
	LGNode Graph;
	Graph = new GNode;
	Graph->Nv = n;
	Graph->Ne = 0;
	for(int i = 1;i <= Graph->Nv;i++)
		Graph->G[i].FirstEdge = NULL;
	return Graph;
} 
void InsertEdge(int x,int y,LGNode T)
{
	edge *NewNode,*NewNode2;
	NewNode = new edge;
	NewNode->v = y;
	NewNode->next = T->G[x].FirstEdge;
	T->G[x].FirstEdge = NewNode;
	NewNode2 = new edge;
	NewNode2->v = x;
	NewNode2->next = T->G[y].FirstEdge;
	T->G[y].FirstEdge = NewNode2;
}
void bfs(LGNode T,int c)
{
	if(c > 6)
		return;
	int z = q.size();
	while(z--)
	{
		int i = q.front();
		q.pop();
		edge *p = T->G[i].FirstEdge;
		while(p != NULL)			
		{
			if(!visi[p->v])
			{
				visi[p->v] = 1;
				sum++;
				q.push(p->v);
			}
			p = p->next;
		}
	}
	if(!q.empty())
		bfs(T,c+1);
}
int main() 
{
	while(cin >> n >> m)
	{
		LGNode T;
		T = CreatGraph();
		while(m--)
		{
			int x,y;
			cin >> x >> y;
			InsertEdge(x,y,T);
		}
		for(int i = 1;i <= n;i++)
		{
			sum = 0;
			memset(visi,0,sizeof(visi));
			while(!q.empty())
				q.pop();
			q.push(i);
			bfs(T,1);
			printf("%d: %.2f%%\n",i,(double)sum/(double)n*100 );
		}
		/*for(int i = 1;i <= n;i++)
		{
			edge *p = T->G[i].FirstEdge;
			cout << i << ' ';
			while(p != NULL)
			{
				cout << p->v << ' ';
				p = p->next;
			}
			cout << endl;
		}*/
	}
    //cout << "AC" <<endl; 
    return 0; 
} 

06-图3 六度空间 “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标 阅读详情

相关推荐

《数据结构》06-图3 六度空间

题目 “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由...

叫我皮卡丘 4356

7-7 六度空间 (30 point(s))

假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。 输入格式: 输入第1行给出两个正整数,分别表示社交网络图的结点数N(1<N≤1e3,表示人数)、边数M(≤33×N,表示社交关系数)。随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个结点的编号(节点从1到N编号)。 输出格式: 对每个结点输出与该结点距离不超过6的结点数占结点总数的百分比,精确到小数点后2位。每个结节点输出一行,格式为“结点编号:(空格)百分比%”。 输入样例: 10 9 1.

pop8824的博客 952

C 记录层数的BFS 06-图3 六度空间 (30分)

06-图3 六度空间 (30分) “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社...

BLUEsang的博客 589

算法 图3 六度空间

题目:“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然...

Dezeming的博客 8131

PAT:06-图3 六度空间

06-图3 六度空间 “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能

ClownY的博客 775

六度空间

本来编程时,结果如下 测试点提示结果耗时内存 0 sample 简单一条链 答案正确 2 ms 372KB 1 不连通 答案正确 2 ms 384KB 2 一般图 答案正确 2 ms 372KB 3 最小N和M 答案正确 2 ms 3

A-Little-Nut的博客 1207

06-图3 六度空间 (30分)(数据结构)(C语言实现)(邻接链表)

“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,

shenbossed的博客 3113

7-7 六度空间(Floyd)

题目链接:7-7 六度空间 考查知识:Floyd 题意描述:给定社交网络n个结点,m条边,统计每个节点计算符合“六度空间”理论的结点占结点总数的百分比。 思路简析:Floyd求全源最短路,然后统计每个结点与其余结点间距离不超过6的结点数占结点总数的百分比输出即可。 具体代码#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e3,inf=0x3fffffff; int d[N][N],n.

勿忘勿失的博客 384

浙大数据结构习题笔记:06-图3 六度空间 (30分)

06-图3 六度空间 (30分) 原题 “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、

Jimobbb的博客 1055

国际项目投标那些事(三)海外项目招标文件的组成

以一个实际的项目作为例子,是我2020年初投的一个东南亚国家的水厂的竞争性投标。这个投标的招标基于FIDIC yellow book (Design and Build) 合同模板。 海外项目的招标一般是有专门的咨询公司(consulting engineer)写招标文件,有的咨询公司非常专业,对于技术、合同、业绩的要求非常细致。 我这个项目的招标文件共5册 400多页(全英文),附件26册将...

WTSolutions的博客 2004

数理金融学笔记 Chap2 二叉树模型Binomial

2 二叉树模型与期权定价 Binomial Model and Option Pricing 文章目录2 二叉树模型与期权定价 Binomial Model and Option Pricing单期二叉树模型 One-step Binomial Model风险与无风险资产单期二叉树模型与无套利条件无套利定价 No Arbitrage Pricing风险中性定价 Risk Neutral PricingDelta套期保值 Delta Hedging两期二叉树模型 Two-Step Binomial Model

weixin_66831131的博客 2387

(c语言详解)06-图3 六度空间 (30分)(详细解释)

博文来源于pta,题目中的六度空间理论是提醒大家可以用广度优先搜索实现,如何判定百分率只需在BFS做一点点手脚。

执念斩长河 2694

matlab中高频变压器怎么找,干货|手把手教你绕制高频变压器

原标题:干货|手把手教你绕制高频变压器绕制一个变压器所需材料:磁芯、骨架、各种铜线、麦拉胶带。变压器参数:磁芯:EE22原边:134T(1-3脚),辅助:32T(5-4脚),输出:15T(10-9脚)原边电感:1380±10%uH漏感:≤44uH引脚分布图: 特别注意:绕制方法为网上下载,其中变压器绕制方法是对的,但其中存在着很多问题(比如,正规变压器的绕组的头和尾是要添加铁氟龙套管的,每一层之间...

weixin_30895121的博客 2125

06-图3 六度空间 (30 分)----------C语言

“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信

weixin_60245632的博客 859

双向晶闸管交流调压基础知识及Multisim电路仿真

本文介绍了双向晶闸管交流调压电路的工作原理及应用。该电路由双向晶闸管、RC移相电路和双向触发二极管组成,通过调节电位器改变触发角实现电压调节。当电位器阻值减小时,触发角减小,输出电压升高;阻值增大时,触发角增大,输出电压降低。Multisim仿真展示了不同电位器档位下的波形特征:0%档位时全导通,50%档位时半导通,100%档位时基本关断。该电路结构简单、调节平滑,广泛应用于调光、调速等场合,但会产生谐波干扰。

XU157303764的博客 838

利用GPAC生成MP4文件

GPAC主要针对学生和内容创作者,代表了一个跨平台的多媒体框架,开发人员可以使用它在 LGPL 许可下制作开源媒体。GPAC多媒体框架兼容范围广泛的流行文件类型,从常见格式(如 AVI、MPEG 和 MOV)到复杂格式(如 MPEG-4 系统或 VRML/X3D)和 360 电影。

深之JohnChen的专栏 1771

06--图3--六度空间理论【BFS控制层数、确定首尾、C++】

题目描述: “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。 输入格式: 输入第111行给出两个正整数,分别表示社交网络图的结点数NNN (1<N≤10​3)(1<N≤10^{​3})(1<N≤10​3)表示人数)、

郑丹丹的博客 846

CSIT883系统分析与项目管理——Lecture3重点概念

🎈本节课,介绍了项目集成管理当中,关于NPV这个概念相关的内容,以及介绍什么是系统需求,什么时候需要开始系统需求,如何进行调查系统需求等等相关的题目,这里供大家复习参考吧!还有还有最关键的是NPV的计算,我单独写一篇博文,需要的同学快去学习吧!

AI手套的博客 1090

06-图3 六度空间 -BFS和DFS(DFS测试点4通不过)

MOOC数据结构--陈越、何钦铭 06-图3六度空间(30分) “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的...

Simon博的博客 809

解放双手!利用海康VM全局脚本+通讯管理打造自动化视觉控制系统

本文深入探讨了如何利用海康VisionMaster(VM)的全局脚本和通讯管理功能,打造高效自动化视觉控制系统。通过全局变量实现数据共享与动态调整,结合多协议通讯管理,提升系统响应速度与智能化水平,适用于工业4.0环境下的复杂视觉检测与决策场景。

weixin_28720573的博客 424

OpenClaw实战:拒绝复制粘贴,用 xlsx 技能打通“带公式模板”的月报自动化

本文详解了如何利用 OpenClaw 框架搭载的 xlsx skill,解决 AI 自动化处理“带复杂公式与格式”Excel 月报时极易翻车的业务痛点。针对传统大模型粗暴写入导致模板报废的问题,OpenClaw 创新采用“双核微创”工作流:首先利用 pandas 高效清洗并聚合海量原始明细数据,随后切换至 openpyxl 将计算结果精准注入目标模板,完美保留原有的底色、边框与跨表动态公式。

我有一个梦想 151

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

06-图3 六度空间 (30分) 思路分析:这里主要列举一下自己犯的错误,因为这个题目要求每一个结点都要BFS,所以说每一个结点BFS之前都要将Visited数组初始化为没有访问的状态,我忘记了,所以运行一直是错误。还要注意的是,这里是从1开始的,所以Visited数组存储最好也从1开始。之所以这里选择邻接表的存储方式,是因为由题意得知 N*(N-1)=N*33,N解出来等于67,所以当N越大,M也就越小,所以这是一个 稀疏图,用邻接表的方式最好。 代码写得有点零乱… #include<iostr

m0_43429389的博客 274

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

06-图3 六度空间 (30 分) “六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。 图1 六度空间示意图 “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多...

qq_39339575的博客 231

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MOOC 06-图3 六度空间

“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示: “六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能够体现社交网

鸿雁丨红豆灬自学计算机学习记录 417

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: P1030 求先序排列
下一篇: 邻接矩阵和邻接表模板(来自慕课网浙大数据结构)
MMMMMMMW
博客等级 码龄9年 34粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值