PTA数据结构与算法题目集(中文) 7-36 社交网络图中结点的“重要性”计算 (30 分)
PTA数据结构与算法题目集(中文) 7-36 社交网络图中结点的“重要性”计算 (30 分)
在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来。他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱。而结点根据其所处的位置不同,其在网络中体现的重要性也不尽相同。
“紧密度中心性”是用来衡量一个结点到达其它结点的“快慢”的指标,即一个有较高中心性的结点比有较低中心性的结点能够更快地(平均意义下)到达网络中的其它结点,因而在该网络的传播过程中有更重要的价值。在有N个结点的网络中,结点vi的“紧密度中心性”(数学上定义为vi到其余所有结点vj (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
题目分析:这是一道图的 多源最短路问题,利用Floyd算法来解决
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define INIFITY 65535
typedef struct ENode* Edge;
struct ENode
{
int V1, V2;
};
typedef struct GNode* Graph;
struct GNode
{
int G[][];
float Nv;
int Ne;
}; int IsEdge(Graph Gra, int V1, int V2)
{
return Gra->G[V1][V2]!=INIFITY;
} void Insert(Graph Gra, Edge E)
{
Gra->G[E->V1][E->V2] = ;
Gra->G[E->V2][E->V1] = ;
} Graph CreateGraph(int Nv)
{
Graph Gra = (Graph)malloc(sizeof(struct GNode));
Gra->Nv = Nv;
Gra->Ne = ;
for (int i = ; i <=Gra->Nv; i++)
for (int j = ; j <= Gra->Nv; j++)
{
Gra->G[i][j] = INIFITY;
if (i == j)
Gra->G[i][j] = ;
}
return Gra;
} int Dist[][];
int Flag=;
void Floyd(Graph Gra)
{
int i, j, k;
for (i = ; i <= Gra->Nv; i++)
for (j = ; j <= Gra->Nv; j++)
Dist[i][j] = Gra->G[i][j];
for(int k=;k<=Gra->Nv;k++)
for(int i=;i<=Gra->Nv;i++)
for (int j = ; j <= Gra->Nv; j++)
{
if (Dist[i][k] + Dist[k][j] < Dist[i][j])
Dist[i][j] = Dist[i][k] + Dist[k][j];
}
for (i = ; i <= Gra->Nv; i++)
for (j = ; j <= Gra->Nv; j++)
if (Dist[i][j] == INIFITY)
{
Flag = ;
break;
}
} int main()
{
int N, M;
scanf("%d%d", &N, &M);
Graph Gra = CreateGraph(N);
Gra->Ne = M;
Edge E = (Edge)malloc(sizeof(struct ENode));
for (int i = ; i < Gra->Ne; i++)
{
scanf("%d%d", &(E->V1), &(E->V2));
Insert(Gra, E);
}
Floyd(Gra);
float num=;
int K;
scanf("%d", &K);
while (K--)
{
num = ;
int n;
scanf("%d", &n);
if (Flag)
{
for (int i = ; i <= Gra->Nv; i++)
num += Dist[n][i];
printf("Cc(%d)=%.2f\n", n, (Gra->Nv - ) / num);
}
else
printf("Cc(%d)=0.00\n", n);
}
return ;
}
PTA数据结构与算法题目集(中文) 7-36 社交网络图中结点的“重要性”计算 (30 分)的更多相关文章
- PTA数据结构与算法题目集(中文) 7-32
PTA数据结构与算法题目集(中文) 7-32 7-32 哥尼斯堡的“七桥问题” (25 分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七 ...
- PTA数据结构与算法题目集(中文) 7-15
PTA数据结构与算法题目集(中文) 7-15 7-15 QQ帐户的申请与登陆 (25 分) 实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式 ...
- PTA数据结构与算法题目集(中文) 7-43字符串关键字的散列映射 (25 分)
PTA数据结构与算法题目集(中文) 7-43字符串关键字的散列映射 (25 分) 7-43 字符串关键字的散列映射 (25 分) 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义 ...
- PTA数据结构与算法题目集(中文) 7-42整型关键字的散列映射 (25 分)
PTA数据结构与算法题目集(中文) 7-42整型关键字的散列映射 (25 分) 7-42 整型关键字的散列映射 (25 分) 给定一系列整型关键字和素数P,用除留余数法定义的散列函数将关键字映射 ...
- PTA数据结构与算法题目集(中文) 7-41PAT排名汇总 (25 分)
PTA数据结构与算法题目集(中文) 7-41PAT排名汇总 (25 分) 7-41 PAT排名汇总 (25 分) 计算机程序设计能力考试(Programming Ability Test,简称P ...
- PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分)
PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分) 7-40 奥运排行榜 (25 分) 每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同.比如 ...
- PTA数据结构与算法题目集(中文) 7-39魔法优惠券 (25 分)
PTA数据结构与算法题目集(中文) 7-39魔法优惠券 (25 分) 7-39 魔法优惠券 (25 分) 在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商 ...
- PTA数据结构与算法题目集(中文) 7-38寻找大富翁 (25 分)
PTA数据结构与算法题目集(中文) 7-38寻找大富翁 (25 分) 7-38 寻找大富翁 (25 分) 胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人.假 ...
- PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分)
PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分) 7-37 模拟EXCEL排序 (25 分) Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. ...
随机推荐
- IOS 项目release版本中关闭NSlog的打印
在-Prefix.pch文件中添加如下代码: #ifdef DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #define debugMethod() NSLo ...
- 自定义FrameWork
本项目是基于iOS-Universal-Framework-master框架制作的,故编译之前需要安装iOS-Universal-Framework-master框架, 步骤如下:1.跳转到iOS-U ...
- 为什么java内部类访问局部变量必须声明为final?
https://blog.csdn.net/z55887/article/details/49229491 先抛出让我疑惑了很久的一个问题 编程时,在线程中使用局部变量时候经常编译器会提示:局部变量必 ...
- flask 模型一对多个人理解
在modle中创建两个模型表 class User(db.Model): id = db.Column(db.Integer,primary_key=True,autoincrement=True) ...
- docker的安装,自己写了一个安装docker的脚本,辅助做docker安装的实验(ubuntu)
#!/bin/bash #获取用户名 [ pwd == '/root' ] && hn="root@$(hostname):~#" || hn="root ...
- 机器学习实战 [Machine learning in action]
内容简介 机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存.谋发展的决定性手段,这使得这一过去为分析师和数学家所专属 ...
- Java对接百度智能云人脸识别
------------------------->这篇文章就是自己做个笔记<------------------------- 首先登录or注册自己的百度智能云管理中心:https:// ...
- hibernate连接oracle
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC & ...
- springMVC容器简介和执行流程
先来看一下,初始化的大体流程: 然后,我们再来看一下,我们的控制器DispatcherServlet的类图及继承关系. 系统启动的时候根据配置文件创建spring的容器, 首先是发送http请求到 ...
- 洛谷 P3808 【模板】AC自动机(简单版) 题解
原题链接 前置知识: 字典树.(会 \(\texttt{KMP}\) 就更好) 显然呢,本题用 字典树 和 \(\texttt{KMP}\) 无法解决问题. 所以我们发明了一个东西: \(\textt ...