当前位置:   article > 正文

PTA-社交网络图中结点的“重要性”计算(并查集+bfs)_python pta 小陈的社交网络

python pta 小陈的社交网络

 

点击打开题目链接

 

思路:先判断一下是否是连通图,否的话就直接输出0.00,否则bfs。

另外注意不要用二维数组去存点和点之间的关系,会超内存,可以用vector容器。

 

 

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <string>
  6. #include <cmath>
  7. #include <queue>
  8. #include <map>
  9. #include <vector>
  10. #define INF 0x3f3f3f3f
  11. using namespace std;
  12. int n,m;
  13. vector<int>e[10010];//用二维数组交的时候超内存
  14. bool book[10010];
  15. int num[10010];//记录从开始点到该点的路的最少条数
  16. //并查集判断是否为连通图
  17. int Boss[10010];
  18. int Find(int x)
  19. {
  20. if(Boss[x]!=x)
  21. Boss[x]=Find(Boss[x]);
  22. return Boss[x];
  23. }
  24. int Merge(int x,int y)
  25. {
  26. int u=Find(x);
  27. int v=Find(y);
  28. if(u!=v)
  29. Boss[u]=v;
  30. }
  31. //搜索
  32. int dfs(int x)
  33. {
  34. memset(book,false,sizeof(book));
  35. memset(num,INF,sizeof(num));
  36. num[x]=0;
  37. queue<int>Q;
  38. Q.push(x);
  39. while(!Q.empty())
  40. {
  41. int now=Q.front();
  42. Q.pop();
  43. book[now]=true;
  44. int s=e[now].size();
  45. for(int i=0; i<s; i++)
  46. {
  47. int point=e[now][i];
  48. if(!book[point])
  49. {
  50. Q.push(point);
  51. if(num[point]>=num[now]+1)
  52. num[point]=num[now]+1;
  53. }
  54. }
  55. }
  56. int sum=0;
  57. for(int i=1; i<=n; i++)
  58. sum+=num[i];
  59. return sum;
  60. }
  61. int main()
  62. {
  63. cin>>n>>m;
  64. memset(e,0,sizeof(e));
  65. for(int i=0; i<=n; i++)
  66. Boss[i]=i;
  67. for(int i=0; i<m; i++)
  68. {
  69. int u,v;
  70. cin>>u>>v;
  71. e[u].push_back(v);
  72. e[v].push_back(u);
  73. Merge(u,v);
  74. }
  75. int Count=0;
  76. for(int i=1; i<=n; i++)
  77. if(Boss[i]==i)
  78. Count++;
  79. int k,x;
  80. cin>>k;
  81. for(int i=0; i<k; i++)
  82. {
  83. cin>>x;
  84. double temp=0;
  85. if(Count==1)//当为连通图时
  86. {
  87. temp=(double)dfs(x);
  88. temp/=(double)(n-1);
  89. temp=1.0/temp;
  90. }
  91. printf("Cc(%d)=%.2lf\n",x,temp);
  92. }
  93. return 0;
  94. }

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/677499
推荐阅读
相关标签
  

闽ICP备14008679号