第一次写博客

最小生成树入门题 附上链接

http://cstest.scu.edu.cn/soj/problem.action?id=2198

这是一道kruskal的模板题(刘汝佳的小白书——《算法竞赛与入门经典》上有基本一模一样的代码)

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <string>
 6 #include <iterator>
 7 #include <algorithm>
 8 #include <cstdlib>
 9 #include <deque>
10 #include <queue>
11 #include <stack>
12 #include <map>
13 #include <vector>
14 #include <set>
15 #include <list>
16 using namespace std;
17 #define PI acos(-1.0)
18 #define INF 0x3f3f3f3f
19 #define MAX 1000005
20 #define MST(a,b) memset(a,b,sizeof(a))
21 #define MOD 1000000007
22 #define EPS 1e-6
23 typedef long long LL;
24 typedef unsigned long long LLU;
25 int n,t;
26 int p[MAX],r[MAX],u[MAX],v[MAX],w[MAX];;
27 int cmp(const int i,const int j) {
28     return w[i] < w[j];
29 }
30 int find(int x) {
31     return p[x] == x ? x : p[x] = find(p[x]);
32 }
33 int kruskal() {
34     int ans = 0;
35     for(int i = 0;i < n;i ++)
36         p[i] = i;
37     for(int i = 0;i < t;i ++)
38         r[i] = i;
39     sort(r,r + t,cmp);
40     for(int i = 0;i < t;i ++) {
41         int e = r[i];
42         int x = find(u[e]);
43         int y = find(v[e]);
44         if(x != y) {
45             ans = max(ans,w[e]);
46             p[x] = y;
47         }
48     }
49     return ans;
50 }
51 int main() {
52     int cases;
53     scanf("%d",&cases);
54     while(cases --) {
55         t = 0;
56         scanf("%d",&n);
57         for(int i = 0;i < n;i ++) {
58             for(int j = 0;j < n;j ++) {
59                 int tmp;
60                 scanf("%d",&tmp);
61                 if(j > i) {
62                     u[t] = i;
63                     v[t] = j;
64                     w[t ++] = tmp;
65                 }
66             }
67         }
68         printf("%d\n",kruskal());
69     }
70     return 0;
71 }

转载于:https://www.cnblogs.com/mitrenick/p/3707451.html

SOJ2198 Highways 最小生成树 kruskal算法相关推荐

  1. HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1863 最小生成树kruskal算法:http://www.zhuoda.org/irini/78592.h ...

  2. 图的最小生成树-Kruskal算法

    问题引入 [问题描述] 编写程序,利用带权无向图的邻接矩阵存储,实现图的最小生成树Kruskal算法. [输入形式] 输入图的顶点序列及图的边的情况.如样例所示.边的输入以输入-1,-1,-1作为结束 ...

  3. 最小生成树kruskal算法

    最小生成树kruskal算法 概述 算法分析 代码 概述 克鲁斯卡尔(Kruskal)(Kruskal)(Kruskal)算法是求连通网的最小生成树的另一种方法.与普里姆(Prim)(Prim)(Pr ...

  4. 实现最小生成树Kruskal算法(附完整代码)

    实现最小生成树Kruskal算法(附完整代码) Kruskal算法是一种常见的计算最小生成树的算法.它的主要思想是将所有的边按照权值从小到大进行排序,并逐个加入到生成树中,如果加入后不会形成环,则保留 ...

  5. 最小生成树kruskal算法并查集版 C语言实现

    今天数据结构课讲了最小生成树的Kruskal算法和Prim算法,不过都只是概念,可能是怕他们听不懂吧,反正算法实现一概不讲...囧 下午抱着<算法导论>跑去图书馆看Kruskal算法,发现 ...

  6. 图论(九)最小生成树-Kruskal算法

    前面说过,Kruskal是从最短边着手构建最小生成树的.其基本过程是:先对图中的所有边按照权重值从小到大进行排序,然后着手选取边构建最小生成树.如果直接从小到大按顺序选取,有可能形成了环,所以对环的处 ...

  7. 算法实践--最小生成树(Kruskal算法)

    什么是最小生成树(Minimum Spanning Tree) 每两个端点之间的边都有一个权重值,最小生成树是这些边的一个子集.这些边可以将所有端点连到一起,且总的权重最小 下图所示的例子,最小生成树 ...

  8. C++ 实现无向图的最小生成树Kruskal算法(完整代码)

    按照Kruskal思想,n个结点的生成树有n-1条边,故反复上述过程,直到选取了n-1条边为止,就构成了一棵最小生成树. 实现Kruskal算法的关键问题是: 当一条边加入T的边集中后,如何判断是否构 ...

  9. 【数据结构与算法】图结构最小生成树Kruskal算法的Java实现

    Kruskal算法 Kruskal算法是图论中用于求解最小生成树的算法,算法时间复杂度为O(eloge) 比较起Prim算法,Kruskal算法虽然同求最小生成树,却更适合稀疏网. 这里图的储存结构建 ...

最新文章

  1. 怎么理解linux的平均负载及平均负载高后的排查工具
  2. java 队列的数组_JAVA-循环数组实现简单的队列
  3. 中立时滞matlab,中立型时滞系统的稳定性改进判据
  4. 五步让你成为专家级程序员
  5. ubuntu10.4的更新源因过期无法更新的解决方法
  6. 雪城大学信息安全讲义 3.1 Set-UID 机制如何工作
  7. Spring boot:注解@SpringBootApplication
  8. React 16.8.3 发布,构建用户界面的 JavaScript 库
  9. 异常值检测 —— MAD(median absolute deviation)
  10. 最大子数组累加和(2种方法)
  11. 《中文分词算法研究》
  12. java 录制_Java屏幕录像
  13. SpringBoot+Vue+Cas单点登录与登出
  14. 安装一台RHEL7虚拟机
  15. 【贪心法】黑白连线问题
  16. 【项目】Online Judge(在线评判系统)
  17. Excel — 动态图表(复选框实现动态图)
  18. Matlab sim函数的用法
  19. Redis底层 知识(校招、社招必看)
  20. eve显示无法连接服务器,eve 链接不到服务器

热门文章

  1. 【新2023 B卷】华为OD机试 - 最多提取子串数目(Python)
  2. 《响应式web设计》读书笔记(一)入门
  3. 【极客出发】web3_Mark loves cat
  4. 2022-15-Java 设计模式-抽象工厂模式
  5. 抽屉原理(鸽巢原理)
  6. 机器学习与R之回归树CART与模型树M5
  7. 火狐浏览器下burpsuite 抓取https数据包----记录一下可笑的配置过程
  8. 中国大量程序员都是孔乙己,悲催可笑的心态
  9. 软文推广首先要了解到软文的分类有哪些
  10. PAT日志 1145