7-36 社交网络图中结点的“重要性”计算 (30 分)(思路加详解)兄弟们PTA乙级题目冲起来
一:题目
在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来。他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱。而结点根据其所处的位置不同,其在网络中体现的重要性也不尽相同。
“紧密度中心性”是用来衡量一个结点到达其它结点的“快慢”的指标,即一个有较高中心性的结点比有较低中心性的结点能够更快地(平均意义下)到达网络中的其它结点,因而在该网络的传播过程中有更重要的价值。在有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位。
输入样例:
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 的 ,没有直接连接的为无穷;
图解:dij算法 和 prime算法
dij单源点最短路径
prime最小生成树
三:上码
/**思路:说这道题思路之前,先说一下做题的思路,任何题,我一拿到题,看到那个公式就蒙了,但我有我自己的做题套路,那就是根据例子即输出输入样例,进行代数规律也就浮出水面。再说这道题,仔细看关键字的话,这是一个单源点求取最短路径问题 。这里没给边的权值,这里是默认为 1 的
*/
#include<bits/stdc++.h>
using namespace std;
#define infinite 9999typedef struct GNode* PtrGraph;
typedef struct GNode{int Nv;int Ne;int Date[10001][10001];
}gnode;int flag = 0;void createGraph(PtrGraph G){int N,M;cin >> N >> M;G->Nv = N;G->Ne = M;//矩阵初始化 for( int i = 1; i <= G->Nv; i++ ){for( int j = 0; j <= G->Nv; j++ ){if( i == j )G->Date[i][j] = 0;elseG->Date[i][j] = infinite;} } //矩阵赋值for( int i = 1; i <= G->Ne; i++ ){int a,b;cin >> a >> b;G->Date[a][b] = 1;G->Date[b][a] = 1;}
}
//dij算法
int dijGraph( PtrGraph G ,int x ){int dist[10001];//存储 指定结点到其他结点的距离int visited[10001] = {0};int count = 0;//记录节点数 int sum = 0;for( int i = 1; i <= G->Nv; i++){dist[i] = G->Date[x][i]; } visited[x] = 1;count++;//已经统计了 x 结点//找最小值 和 更新 while( 1 ){int m = -1;int min = infinite;for( int i = 1; i <= G->Nv; i++ ){if( visited[i] != 1 &&dist[i] < min ){min = dist[i];m = i;}}if( m == -1 ){break;}count++;visited[m] = 1;for( int i = 1; i <= G->Nv; i++ ){if( visited[i] != 1 && min + G->Date[m][i] < dist[i] ){dist[i] = min + G->Date[m][i];}}} if( count != G->Nv ){flag = 1;}for( int i = 1; i <= G->Nv; i++ ){sum += dist[i];}return sum;} int main(){PtrGraph G = (PtrGraph)malloc(sizeof(struct GNode));createGraph(G);int K;cin >> K;for( int i = 0; i < K; i++ ){int temp1,temp2;cin >> temp1;temp2 = dijGraph(G,temp1);// cout << temp2 << endl;if( flag == 0){double temp3 = (double)(G->Nv - 1) / temp2; printf("Cc(%d)=%0.2f\n",temp1,temp3);}else{printf("Cc(%d)=0.00\n",temp1);}}
} //9 13
//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
//3 3 4 9
四:加油冲呀
·1:附带数据结构和算法导图一,别问,问就是嫖的,自己觉得蛮有用的,用来查漏补缺
7-36 社交网络图中结点的“重要性”计算 (30 分)(思路加详解)兄弟们PTA乙级题目冲起来相关推荐
- 社交网络图中结点的“重要性”计算 (30 分)【最高效解法】
立志用最少的代码做最高效的表达 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱 ...
- 7-38 社交网络图中结点的“重要性”计算 (30分) 最短路 迪杰斯特拉堆优化
在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱.而结点根据其所处的位置不同,其 ...
- 社交网络图中结点的“重要性”计算
社交网络图中结点的"重要性"计算 // @author: Folivora Li // @copyright: Folivora Li/*10.[1] 社交网络图中结点的" ...
- 【天梯赛】单词长度、社交网络图中结点的“重要性”计算、朋友圈、家谱处理、狼人杀
1.单词长度 单词长度 #include<bits/stdc++.h> using namespace std; const int N=2e8+10; string s; int fla ...
- 7-12(图) 社交网络图中结点的“重要性”计算(30 分)
在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱.而结点根据其所处的位置不同,其 ...
- 社交网络图中结点的“重要性“计算(Dijkstra + SPFA + Floyd + 模板)
题目链接: 无 题目大意: 求一个点到其他所有点的最短距离和,保证图连通. 解题过程: 刚开始用 Floyd 水过的,后来用换了几种方法,不错的模板题,Floyd 的时候,要用 vector 存边,否 ...
- 7-53 两个有序序列的中位数 (25 分)(思路加详解)用STL容器中的set容器的自动去重过不去
一:题目 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A 0 ,A 1 ,⋯,A N−1 的中位数指A (N−1)/2 的值,即第⌊(N+1)/ ...
- linux命令wget的url路径太长,Linux中WGET下载https链接及WGET命令的详解
Linux中WGET下载https链接及WGET命令的详解 使用如下的命令下载https链接: ```bash wget -r -np -nd --accept=gz --no-check-certi ...
- python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...
最新文章
- 用Beamer制作幻灯片(卷三 动画篇)
- BZOJ 2084 [Poi2010]Antisymmetry(manacher)
- GPTEE中的Storage API的使用
- 29-30Python多线程、多线程、使用threading模块创建线程;JSON数据解析、编码为JSON类型转换对应表、Python类型转换对应表、json.dumps与json.loads
- 带有Java 8,lambda表达式和Mockito-Java8附加组件的更紧凑的Mockito
- 完数c++语言程序_C语言经典100题(19)
- 正则表达式:日期格式的校验(日期+时间)
- java请假审批怎么实现_java实现请假时间判断
- 雨林木风win11 64位原版系统v2021.08
- 技校毕业是什么学历_初中毕业上技校学什么专业好
- 分层精品优秀电商海报模版|无需数量多,胜在精
- linux mysql 不区分大小写,Linux下设置MySQL不区分大小写_MySQL
- 为何python不好找工作-为什么python不好找工作
- Mac OS X下面 Node.js环境的搭建
- 从零开始学Android(一)
- 超全深度学习细粒度图像分析:项目、综述、教程一网打尽
- 史上最简单的Map转List的方式
- 深度学习细颗粒图像分析综述
- 人工智能学python还是c_考虑到未来人工智能的发展,应该学习C++/C语言还是Python语言?...
- 家庭组网方案研究(2):路由器和光猫上的连接方式
热门文章
- android listview item置顶,ListView的item置顶
- mysql数据表设计要点以及快门
- sql将html转成excel,使用SQL*PLUS,构建完美excel或html输出
- 个人中心的html,个人中心.html
- C语言试题二十七之请编写程序,实现矩阵(3行3列)的转置(即行列互换)。
- Git之添加公钥之后git clone ****提示sign_and_send_pubkey: signing failed: agent refused operation
- Android 之View绘图原理总结
- python thinker canvas create_arc 使用详解
- 日本的电视节目到底能有多特别?
- Cell发文!施一公科研团队取得重大突破