题目链接:


题目大意:

求一个点到其他所有点的最短距离和,保证图连通。


解题过程:

刚开始用 Floyd 水过的,后来用换了几种方法,不错的模板题,Floyd 的时候,要用 vector 存边,否则超内存。


题目分析


AC代码(Dijkstra + SPFA)

#include<bits/stdc++.h>
using namespace std;const int MAX = 11234, INF = 0x3f3f3f3f;vector<int> edges[MAX];
int dist[MAX], book[MAX];void spfa(int s) {memset(dist, INF, sizeof(dist));memset(book, 0, sizeof(book));queue<int> q;q.push(s);book[s] = 1;dist[s] = 0;while (!q.empty()) {int u = q.front();for (int i = 0; i < edges[u].size(); i++) {int v = edges[u][i];if (dist[v] > dist[u] + 1) {dist[v] = dist[u] + 1;if (!book[v]) {q.push(v);book[v] = 1;}}}q.pop();book[u] = 0;}
}void dijkstra(int s) {memset(dist, INF, sizeof(dist));priority_queue<pair<int, int> > q;dist[s] = 0;q.push(make_pair(-dist[s], s));while (!q.empty()) {int u = q.top().second;q.pop();for (int i = 0; i < edges[u].size(); i++) {int v = edges[u][i];if (dist[v] > dist[u] + 1) {dist[v] = dist[u] + 1;q.push(make_pair(-dist[v], v));}}}
}int main() {int n, m;scanf("%d %d", &n, &m);while (m--) {int u, v;scanf("%d %d", &u, &v);edges[u].push_back(v);edges[v].push_back(u);}int k;scanf("%d", &k);while (k--) {int s;scanf("%d", &s);dijkstra(s);int sum = 0;for (int i = 1; i <= n; i++) {if (i == s)continue;sum += dist[i];}printf("Cc(%d)=%.2f\n", s, (n-1.0)/sum);}
}

AC代码(Floyd):

#include<bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f, MAX = 10001;int main()
{vector<int>edge[MAX];int n, m;scanf("%d %d", &n, &m);for (int i = 0; i <= n; i++) {for (int j = 0; j <= n; j++) {edge[i].push_back(INF);}}for (int i = 1; i <= n; i++) {edge[i][i] = 0;}for (int i = 0; i < m; i++) {int u, v;scanf("%d %d", &u, &v);edge[u][v] = edge[v][u] = 1;}for (int k = 1; k <= n; k++) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (edge[i][j] > edge[i][k] + edge[k][j])edge[i][j] = edge[i][k] + edge[k][j];}}}int k;scanf("%d", &k);while (k--) {int c;scanf("%d", &c);double sum = 0;for (int i = 1; i <= n; i++) {if (i == c)continue;sum += edge[c][i];}printf("Cc(%d)=%.2f\n", c, (n-1)/sum);}
}

转载于:https://www.cnblogs.com/ACMFish/p/7222852.html

社交网络图中结点的“重要性“计算(Dijkstra + SPFA + Floyd + 模板)相关推荐

  1. 社交网络图中结点的“重要性”计算

    社交网络图中结点的"重要性"计算 // @author: Folivora Li // @copyright: Folivora Li/*10.[1] 社交网络图中结点的" ...

  2. 【天梯赛】单词长度、社交网络图中结点的“重要性”计算、朋友圈、家谱处理、狼人杀

    1.单词长度 单词长度 #include<bits/stdc++.h> using namespace std; const int N=2e8+10; string s; int fla ...

  3. 社交网络图中结点的“重要性”计算 (30 分)【最高效解法】

    立志用最少的代码做最高效的表达 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱 ...

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

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

  5. 7-36 社交网络图中结点的“重要性”计算 (30 分)(思路加详解)兄弟们PTA乙级题目冲起来

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

  6. 7-38 社交网络图中结点的“重要性”计算 (30分) 最短路 迪杰斯特拉堆优化

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

  7. 最短路算法详解(Dijkstra/SPFA/Floyd)

    转自:http://blog.csdn.net/murmured/article/details/19281031 一.Dijkstra Dijkstra单源最短路算法,即计算从起点出发到每个点的最短 ...

  8. 基于新闻数据的社交网络图数据分析实战

    图数据处理 在这一部分,实现了对数据文件进行按词性的分词,提取其中的实体并建立社交网络,对该社交网络进行基本的数据分析. 数据文件来源于人大新闻网的新闻内容,利用结巴分词对数据文件中的新闻标题和正文内 ...

  9. 社交网络图挖掘3--重叠社区的发现及Simrank

    重叠社区的发现 相关知识点 关系图模型 避免成员隶属关系的离散式变化 Simrank 带重启的随机游走 重叠社区的发现 相关知识点 社区的本质:一个实体有可能同时属于两个社区,任一社区内的边会十分密集 ...

最新文章

  1. 山有木兮木有枝,心悦君兮君不知
  2. Django-form组件
  3. ccna设备的NAT地址转换
  4. PsList v1.28使用
  5. c2064 项不会计算为接受0个参数的函数_无网格法理论与Matlab程序设计(6)——传统径向基点插值(RPIM)形函数...
  6. 推荐系统炼丹笔记:阿里DMIN多重兴趣网络
  7. [HZOI 2016][Tyvj 1729]文艺平衡树 这道题我真是哭了,调了一下午,一晚上
  8. 手持gps坐标转换参数求解方法及在excel中的实现_地质填图手持GPS的校正方法
  9. cut out数据增强_被多种离散化场景困扰?8种python技巧!让数据处理更简单
  10. openssh-server (= 1:6.6p1-2ubuntu1) but it is not going to be installed
  11. vue报错 Uncaught (in promise) NavigationDuplicated {_name:““NavigationDuplicated“... 的解决方法
  12. Redis的复制(Master/Slave)
  13. C语言求S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5),n和a都从键盘输入。...
  14. html5表单提交触发js,JS表单提交中onsubmit事件return的作用
  15. quicktime不能成功安装
  16. 怎样检测php语法错误,检查php的语法错误
  17. 虚拟机vm介绍及虚拟机常见操作
  18. 网站小服务器地址,小网站需要云服务器地址
  19. 那些实用的 Chrome 扩展神器(二)
  20. 你已经是智能机器人,该上岗新基建了

热门文章

  1. Mybatis中resultMap使用
  2. redisTemplate设置key零点过期,生成自增的单号
  3. C语言封装带省略参数的函数,C与C++的函数声明中省略参数的不同意义
  4. Qt QObject::connect: Parentheses expected错误原因
  5. 消息队列遥测传输(MQTT)介绍
  6. 接软件开发项目,你需要知道这些!
  7. 快速理解网络通信协议
  8. java定时线程池_java 定时器线程池(ScheduledThreadPoolExecutor)的实现
  9. 全库模式 用户模式 表模式_暗模式,亮模式和用户的故事
  10. illustrator下载_平面设计:16个Illustrator快捷方式可加快工作流程