在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来。他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱。而结点根据其所处的位置不同,其在网络中体现的重要性也不尽相同。

“紧密度中心性”是用来衡量一个结点到达其它结点的“快慢”的指标,即一个有较高中心性的结点比有较低中心性的结点能够更快地(平均意义下)到达网络中的其它结点,因而在该网络的传播过程中有更重要的价值。在有N个结点的网络中,结点v​i​​ 的“紧密度中心性”Cc(v​i​​ )数学上定义为v​i​​ 到其余所有结点v​j​​ (j≠i) 的最短距离d(v​i​​ ,v​j​​ )的平均值的倒数:

对于非连通图,所有结点的紧密度中心性都是0。

给定一个无权的无向图以及其中的一组结点,计算这组结点中每个结点的紧密度中心性。

输入格式:
输入第一行给出两个正整数N和M,其中N(≤10​4​​ )是图中结点个数,顺便假设结点从1到N编号;M(≤10​5​​ )是边的条数。随后的M行中,每行给出一条边的信息,即该边连接的两个结点编号,中间用空格分隔。最后一行给出需要计算紧密度中心性的这组结点的个数K(≤100)以及K个结点编号,用空格分隔。

输出格式:
按照Cc(i)=x.xx的格式输出K个给定结点的紧密度中心性,每个输出占一行,结果保留到小数点后2位。

题目思路:
1.采用Floyf算法可以把每个顶点到其他所有点的最短路径算出来这是关键的一点。
2.注意在对图进行初始化的时候,用fill( Graph[0],Graph[0]+ MAXNMAXN, INF )会导致内存超限,因此采用二重循环,只对nn大小进行初始化。
3.最后需要注意,采用Floyd算法以后,如何判断一个是否为 非连通图。通过一个for循环,查看任意一行中有没有INF值。(如果连通,Floyd以后,每个点必定能到达其他所有点)

#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 10005;
const int INF = 0x3f3f3f3f;
int Graph[MAXN][MAXN];
void Floyd();
int n, m, k;
int main()
{cin >> n >> m;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++){if (i == j)Graph[i][j] = 0;elseGraph[i][j] = INF;}int a, b, t;while (m--){cin >> a >> b;Graph[a][b] = Graph[b][a] = 1;}Floyd();int flag = 1;for (int i = 1; i <= n; i++)if (Graph[1][i] == INF){flag = 0;break;}cin >> k;while (k--){cin >> t;double sum = 0;for (int i = 1; i <= n; i++){if (Graph[t][i] != INF)sum += Graph[t][i];}double average = (1.0 * (n - 1)) / sum;printf("Cc(%d)=%.2f\n", t, flag ? average : 0);}return 0;
}
void Floyd()
{for (int k = 1; k <= n; k++)for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (Graph[i][k] + Graph[k][j] < Graph[i][j])Graph[i][j] = Graph[i][k] + Graph[k][j];
}

社交网络图中结点的“重要性”计算 (30 分)(Floyd)相关推荐

  1. 社交网络图中结点的“重要性”计算 (30 分)【最高效解法】

    立志用最少的代码做最高效的表达 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱 ...

  2. 7-36 社交网络图中结点的“重要性”计算 (30 分)(思路加详解)兄弟们PTA乙级题目冲起来

    一:题目 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱.而结点根据其所处的位 ...

  3. 7-38 社交网络图中结点的“重要性”计算 (30分) 最短路 迪杰斯特拉堆优化

    在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱.而结点根据其所处的位置不同,其 ...

  4. 社交网络图中结点的“重要性”计算

    社交网络图中结点的"重要性"计算 // @author: Folivora Li // @copyright: Folivora Li/*10.[1] 社交网络图中结点的" ...

  5. 【天梯赛】单词长度、社交网络图中结点的“重要性”计算、朋友圈、家谱处理、狼人杀

    1.单词长度 单词长度 #include<bits/stdc++.h> using namespace std; const int N=2e8+10; string s; int fla ...

  6. 7-12(图) 社交网络图中结点的“重要性”计算(30 分)

    在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱.而结点根据其所处的位置不同,其 ...

  7. 社交网络图中结点的“重要性“计算(Dijkstra + SPFA + Floyd + 模板)

    题目链接: 无 题目大意: 求一个点到其他所有点的最短距离和,保证图连通. 解题过程: 刚开始用 Floyd 水过的,后来用换了几种方法,不错的模板题,Floyd 的时候,要用 vector 存边,否 ...

  8. 腾讯QQ2008年笔试题中的附加题(30分)

    //腾讯QQ2008年笔试题中的附加题(30分) //从程序健壮性进行分析,下面的FillUserInfo函数和main函数分别 //存在什么问题?#include <iostream> ...

  9. 基于新闻数据的社交网络图数据分析实战

    图数据处理 在这一部分,实现了对数据文件进行按词性的分词,提取其中的实体并建立社交网络,对该社交网络进行基本的数据分析. 数据文件来源于人大新闻网的新闻内容,利用结巴分词对数据文件中的新闻标题和正文内 ...

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

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

最新文章

  1. java---实现闹钟的基本功能
  2. 蒙古族女孩鲍尔金娜的小说《紫茗红菱》
  3. fisher-yates_使用Fisher-Yates随机播放算法以O(n)时间随机播放给定数组
  4. 清华大学《操作系统》(九):进程和线程
  5. 利用python寻找列表中相邻元素之差绝对值为1的所有最长链
  6. linux桌面只有日期,Linux桌面何时才能好用?
  7. 数据要素市场的组织形式和估值框架
  8. python程序设计考哪些_Python程序设计试题库
  9. 不可能解开的谜题 (程序员修炼之道,评注者序)
  10. 最简单的Python爬虫案例,看得懂说明你已入门,附赠教程
  11. JavaScript之闭包理解
  12. 循环神经网络RNN——利用LSTM对脑电波信号进行分类,Keras实现
  13. Ipad平板作为MAC苹果电脑的扩展屏幕的技术研究
  14. 微信小程序自定义拍照功能
  15. mate30首发鸿蒙系统,华为mate30首发鸿蒙系统,mate20 Pro再降两千元
  16. 读书虽苦,却是最容易的那条!
  17. 数字图像处理——第七章(小波变换和多分辨率处理)
  18. 双指针算法及模板应用
  19. 使用域名注册服务 Domains配置域名【华为云至简致远】
  20. svchost|dllhost系统进程与系统安全——“其实我们很无辜”

热门文章

  1. 【转载】程序员面对下列技术问题,如何做决策
  2. 实训汇编语言设计——将bcd码转化为二进制数
  3. 3月9日 英语笔记-英标
  4. chrome浏览器启用本地exe程序
  5. 13. GameProjec1_GameEngine
  6. Ajax_使用 jQuery 实现Ajax
  7. [LeetCode]Patching Array
  8. 《机电传动控制》第六周学习笔记
  9. ExtJS4.2学习 php版(五)
  10. S3C6410和S5PV210的启动模式介绍