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

谁践踏了优雅 2022-05-09 10:58 205阅读 0赞

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

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

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

输入格式:

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

输出格式:

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

输入样例:

  1. 9 14
  2. 1 2
  3. 1 3
  4. 1 4
  5. 2 3
  6. 3 4
  7. 4 5
  8. 4 6
  9. 5 6
  10. 5 7
  11. 5 8
  12. 6 7
  13. 6 8
  14. 7 8
  15. 7 9
  16. 3 3 4 9

输出样例:

  1. Cc(3)=0.47
  2. Cc(4)=0.62
  3. Cc(9)=0.35
  4. #include<bits/stdc++.h>
  5. using namespace std;
  6. #define INF 0x3f3f3f3f
  7. int Dis[10002];
  8. int mp[10002][10002];
  9. int main()
  10. {
  11. int l,x,n,m;
  12. cin>>n>>m;
  13. for(int i=1; i<=n; i++){
  14. for(int j=1; j<=n; j++){
  15. mp[i][j]=INF;//双向图
  16. }
  17. }
  18. for(int i=1; i<=m; i++){
  19. int x,y;
  20. scanf("%d%d",&x,&y);
  21. mp[x][y]=mp[y][x]=1;//双向图
  22. }
  23. for(int i=1; i<=n; i++){
  24. //找出两点间的最短路径
  25. for(int j=1; j<=n; j++){
  26. for(int k=1; k<=n; k++){
  27. if(i==j || i==k || j==k)continue;
  28. if(mp[k][j]>mp[k][i]+mp[i][j])
  29. mp[k][j]=mp[k][i]+mp[i][j];
  30. }
  31. }
  32. }
  33. cin>>l;
  34. for(int i=1; i<=l; i++){
  35. cin>>x;
  36. int t=0;
  37. Dis[x]=0;
  38. for(int j=1; j<=n; j++){
  39. if(j!=x)Dis[j]=mp[x][j];//距离各点的最小距离
  40. if(Dis[j]==INF){
  41. t=1;
  42. }
  43. }
  44. if(t==1){
  45. //不连通
  46. cout<<"Cc("<<x<<")=0.00"<<endl;
  47. continue;
  48. }
  49. else{
  50. for(int j=1; j<=n; j++){
  51. t+=Dis[j];//求和
  52. }
  53. cout<<fixed<<setprecision(2)<<"Cc("<<x<<")"<<"="<<(n-1)*1.0/t<<endl;
  54. }
  55. }
  56. return 0;
  57. }

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读

    相关 计算链表相邻最小值

    计算链表相邻结点和的最小值 【问题描述】 以下程序的功能是创建有ct个结点的链表,ct的值从键盘输入,每个结点中包含一个整数信息(同样从键盘输入)。计算该链表中每两个

    相关 L3-003 社交集群(30

    在社交网络平台注册时,用户通常会输入自己的兴趣爱好,以便找到和自己兴趣相投的朋友。有部分兴趣相同的人们就形成了“社交集群”。现请你编写程序,找出所有的集群。 输入格式: 输