zoukankan      html  css  js  c++  java
  • 7-36 社交网络图中结点的“重要性”计算 (30分)

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

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

    对于非连通图,所有结点的紧密度中心性都是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
    ",d,solve(d));
        }
    }
  • 相关阅读:
    【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版
    【转】 Pro Android学习笔记(三九):Fragment(4):基础小例子-续
    【转】MEAN:Nodejs+express+angularjs+mongodb搭建前端项目框架NJBlog
    handlebars中的partial
    jquery源码分析
    数据库:MySQL索引背后的数据结构及算法原理【转】
    nginx做rails项目web服务器缓存配置方法
    浏览器刷新的三种方式
    【转】火狐浏览器中firebug插件的时间线域解释
    Rails:rails链接多个数据库【转】
  • 原文地址:https://www.cnblogs.com/8023spz/p/12299252.html
Copyright © 2011-2022 走看看