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

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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

9 14
1 2
1 3
1 4
2 3
3 4
4 5
4 6
5 6
5 7
5 8
6 7
6 8
7 8
7 9
3 3 4 9

输出样例:

Cc(3)=0.47
Cc(4)=0.62
Cc(9)=0.35

边的权都是1,bfs解决。代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int n,m,k;
vector<int> adj[10001];

double solve(int d) {
    int q[10000],vis[10001] = {0},head = 0,tail = 0;
    double sum = 0;
    q[tail ++] = d;
    vis[d] = 1;
    while(head < tail) {
        int temp = q[head ++];
        sum += vis[temp] - 1;
        for(int i = 0;i < adj[temp].size();i ++) {
            if(vis[adj[temp][i]]) continue;
            q[tail ++] = adj[temp][i];
            vis[adj[temp][i]] = vis[temp] + 1;
        }
    }
    if(tail < n) return 0;
    return (n - 1) / sum;
}
int main() {
    int u,v,d;
    scanf("%d%d",&n,&m);
    for(int i = 0;i < m;i ++) {
        scanf("%d%d",&u,&v);
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    scanf("%d",&k);
    for(int i = 0;i < k;i ++) {
        scanf("%d",&d);
        printf("Cc(%d)=%.2f\n",d,solve(d));
    }
}

原文地址:https://www.cnblogs.com/8023spz/p/12299252.html

时间: 2024-08-30 15:29:18

7-36 社交网络图中结点的“重要性”计算 (30分)的相关文章

PTA数据结构与算法题目集(中文) 7-36 社交网络图中结点的“重要性”计算 (30 分)

PTA数据结构与算法题目集(中文)  7-36 社交网络图中结点的“重要性”计算 (30 分) 7-36 社交网络图中结点的“重要性”计算 (30 分) 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱.而结点根据其所处的位置不同,其在网络中体现的重要性也不尽相同. “紧密度中心性”是用来衡量一个结点到达其它结点的“快慢”的指标,即一个有较高中心性的结点比有较低中心性的结点能够

进阶实验6-3.2 社交网络图中结点的“重要性”计算 (30分)-dijkstra算法

解题思路:(邻接矩阵存储) 用dijkstra算法依次求出每个结点到其余结点的最短距离 #include <stdio.h> #include <string.h> #define INF 0x3f3f3f3f #define MaxVex 1000+10 int G[MaxVex][MaxVex]; int visit[MaxVex]; int Nv,Ne; void Init() { memset(G,INF,sizeof(G)); int i; for(i=1; i<=

PTA 7-36 社交网络图中结点的“重要性”计算(图的BFS)

本题考点: 图的BFS 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱.而结点根据其所处的位置不同,其在网络中体现的重要性也不尽相同. "紧密度中心性"是用来衡量一个结点到达其它结点的"快慢"的指标,即一个有较高中心性的结点比有较低中心性的结点能够更快地(平均意义下)到达网络中的其它结点,因而在该网络的传播过程中有更重要的价值.在有N个结点的网络

友盟社交分享中的那些坑

友盟社交分享中的那些坑 目前在做的产品,新版本需要支持社交分享,其实旧版本已经有了,但是被屏蔽了,本来再次打开也没什么,但是发现新的需求要多支持一个平台,而旧平台的sdk又太旧了(接口都改了),为了节约时间,就考虑友盟社交分享,文档说快速集成只要10分钟. 下面呢,咱来说下具体使用友盟分享遇到的一些问题 首先是 产品需求 为了避免大伙看大段的需求文档,咱精简出和本文相关的需求 分享到微信好友 分享到微信朋友圈 分享到qq空间 分享到新浪微博 分享图片+文字 分享视频+文字 分享纯文字 点击分享出

Hadoop 分析图中节点的重要性,求解图中节点三角形个数

Hadoop 求解无向图中节点的重要性,通过求解节点的三角形个数来展现: 求解图中节点重要性,并排序,在大数据,分布式处理大型图组织形式的数据时很重要,找出重要节点,并对重要节点做特殊处理是很重要的 下面讲解如何来求解 这篇文章分为三部分: 1,python生成无向图的邻接矩阵 2,python画出这个无向图 3,hadoop mapreduce 求解图中每个节点的三角形个数 关于hadoop求解矩阵相乘,请看之前的文章:http://blog.csdn.net/thao6626/article

测试oracle 11g cluster 中OLR的重要性

 测试oracle 11g cluster 中OLR的重要性 called an Oracle Local Registry (OLR): each node in a cluster has a local registry for node-specific resources 测试一:模拟olr异常丢失的情况: 这里首先将olr renam [[email protected] cdata]# mv vmrac2.olr vmrac2.olr.bak 然后尝试去启动crs [[emai

HTML5移动开发之路(36)——jQuery中的DOM操作

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(36)--jQuery中的DOM操作 1.查询 利用选择器查找节点 使用 html() / text() / attr() 输出节点文本和属性值. 注意:下拉列表使用 val() [html] view plain copy print? <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery

36.在字符串中删除特定的字符

http://zhedahht.blog.163.com/blog/static/25411174200801931426484/ 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变成"Thy r stdnts.". 分析:这是一道微软面试题.在微软的常见面试题中,与字符串相关的题目占了很大的一部分,因为写程序操作字符串能很好的反映我们的

剑指Offer 面试题36:数组中的逆序对及其变形(Leetcode 315. Count of Smaller Numbers After Self)题解

剑指Offer 面试题36:数组中的逆序对 题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 例如, 在数组{7,5,6,4}中,一共存在5个逆序对,分别是(7,6),(7,5),(7,4),(6,4)和(5,4),输出5. 提交网址: http://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tpId=13&tqId=11188 或 htt