考场上的时候被题目完全蒙住了,当时状态也不好,前几次考试每次考试当天就头晕感冒流鼻涕

好的,以上都是借口,自己没有好好复习才是真的...

题目:

好的,以上题目简述就是:给你一个无向连通图,求它的最小生成树的最大边,姐妹们,如果你们考场看懂了题目带了数据结构书或者会krukal又怎么不会得分呢?

我就是没看懂题目得人啊!不过,通过我今天的验证,发现就算我看懂了题目我也不一定得分,因为我运行错误orz...

就是简单的使用了一下kruskal,整个算法清晰易懂

 #include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<iostream>
using namespace std;
//第一次提交:运行错误,查看代码,没啥问题啊???
//第二次提交:修改MAX_VEX = 10^5, 改为5 * 1e5 + 10 ,记住乘方的表示方法
//...
//第八次提交,100分,修改seek函数,由原来的while循环变为条件递归调用!!!然后在找到输出key的地方由原来条件判断来查找i,变成了最后直接计算查找i
//姐妹们,要记住当整个测试数据很大的时候,即使你的计算即使if,但是放到while里面,该大的数据还是大,我们尽量一点点抠时间总能给你节约出来
const int MAX_VEX = *1e5 + ;
int set[MAX_VEX];
typedef struct edged{
int bv, ev, w;
}Edges;
Edges edgeset[ * MAX_VEX]; bool cmp(Edges a,Edges b){
return a.w < b.w;
} int seeks(int v){
return set[v] == v ? v : set[v] = seeks(set[v]);
} int kruskal(int n, int m){
int v1, v2, i;
for(i = ; i <= m; i++){
set[i] = i;
}
int u = ;//u记录连接的边的数量,当u = n-1时,已经构造处一棵树
int key;
i = ;
while(u < n-){
v1 = seeks(edgeset[i].bv);//确定边的顶点所在连通分量的根节点
v2 = seeks(edgeset[i].ev);
if(v1 != v2){
set[v1] = v2;
u += ;
}
i++;
}
i = i-;
key = edgeset[i].w;
return key;
} int main(){
int n, m, root;
cin >> n >> m >> root;
for(int i = ; i <= m; i++){
cin >> edgeset[i].bv >> edgeset[i].ev >> edgeset[i].w;
}
sort(edgeset+,edgeset+m+,cmp);//对边集数组按权值升序排序,其中n为元素个数,即图的边数
int t = kruskal(n, m);
cout << t;
return ;
}

我从题目给大家简略(粗糙带懵逼)的分析一下:

为什么说是求最小生成树的最大边呢?

1:先求每一层的最大边

2:将所有层最大边比较求最大边

也就是求整棵树的最大边

那要节约时间当然是所用的边的权值越小越好

假设最小生成树的最大边a不是题目所得最求生成树最大边b,即a > b,那么就是存在比最小生成树使用更小边得到的生成树,obviously,与最小生成树的定义矛盾了,所以a <= b

Therefore 我们需要求无向连通图的最小生成树

普遍使用的算法是prim和kruskal,但是prim使用了邻接矩阵来表示图的关系,适用于边数多顶点少的情况,但是这道题的顶点最大值上了10的5次方,很容易使用数组越界,为了保险起见,我使用了kruskal,结构体占占空间就好了

说一下我在提交答案时出现的错误,给大家一个小小的经验或者说是给我自己提个醒

乘方的表示:切记啊切记,不能直接表示10^4,而是使用1e4,最好大家开空间的时候往额定值大了开,这样总比一不小心开小了好,由于这个错误,我报出了运行错误

运行超时:这时候已经得到70分了,但是超时了,所以我就去看看大佬们的代码,一点一点去抠自己的时间,while循环里的判断拿出来,while变成递归调用,嗯,还是挺有用的

渣渣之开心~

201812-4 数据中心(kruskal)的更多相关文章

  1. CCF(数据中心):最小生成树+kruskal算法

    数据中心 201812-4 这里就是最小生成树的应用 #include<iostream> #include<cstdio> #include<algorithm> ...

  2. SQL Azure (17) SQL Azure V12 - 跨数据中心标准地域复制(Standard Geo-Replication)

    <Windows Azure Platform 系列文章目录> 熟悉Microsoft Azure平台的读者都了解,Azure SQL Database提供不同等级的,跨数据中心的异地冗余 ...

  3. Google数据中心B4网络具体实现

    ① 背景介绍 Google的网络有两种,一种是数据中心内部网络,另外一种是WAN网,其中WAN网又分为两种:一是数据中心之间的互联网络,属于内部网络(G-Scale Network),另外一种是面向I ...

  4. SDN与NFV技术在云数据中心的规模应用探讨

    Neo 2016-1-29 | 发表评论 编者按:以云数据中心为切入点,首先对SDN领域中的叠加网络.SDN控制器.VxLAN 3种重要技术特点进行了研究,接下来对NFV领域中的通用服务器性能.服务链 ...

  5. Microsoft Azure News(1) 新的数据中心Japan East, Japan West and Brazil South

    <Windows Azure Platform 系列文章目录> 微软官方博客今天表示,微软宣布将在日本东部(埼玉县)和日本西部(大阪)提供Windows Azure服务.就在最近,微软为W ...

  6. 揭秘Facebook首个数据中心:全球15亿用户的账户信息都在这里

      投递人 itwriter 发布于 2016-07-14 17:41 评论(0) 原文链接 [收藏]  对于 Facebook.Google 这种体量的科技公司而言,数据中心应该是处于军事级别的保密 ...

  7. 从Windows 2012标准版升级到数据中心版,标准评价版本升级到标准体验版本并激活

    对于Windows 7.Windows 8操作系统,可以在图形界面中通过输入序列号,从低版本直接升级到高的版本,例如从Windows 7家庭版升级到专业版或旗舰版.而对于Windows Server ...

  8. 云计算和大数据时代网络技术揭秘(八)数据中心存储FCoE

    数据中心存储演化——FCoE   数据中心三大基础:主机 网络 存储 在云计算推动下,存储基础架构在发生演变 传统存储结构DAS.SAN在发展中遇到了布线复杂.能耗增多的缺点(原生性),需要对架构做根 ...

  9. [转]漫谈数据中心CLOS网络架构

    http://djt.qq.com/article/view/238 1.数据中心网络架构挑战 随着技术的发展,数据中心的规模越来越大,一个数据中心的服务器容量从几年前的几千台服务器发展到今天的几万甚 ...

  10. [转载] Google数据中心网络技术漫谈

    原文: http://www.sdnlab.com/12700.html?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd ...

随机推荐

  1. java源码 -- LinkedHashMap

    一.概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题. 除此之外,Linke ...

  2. 数据库相关概念讲解(java)

    1.常用类或接口介绍 1.DataSource接口 通过javaAPI中javax.sql.DataSource接口注释了解. 1.DataSource功能 如下图: 翻译: DataSource对象 ...

  3. C++基础--inline

    内联函数的定义: 在函数返回类型前加上inline关键字可以将函数指定为内联函数. 内联函数和普通函数的区别: 当编译器处理调用内联函数的语句时,不会将该语句编译成函数调用的指令,而是直接将整个函数体 ...

  4. HashSet和HashMap

    HashMap 概念和特征  概念:以键值对的形式存储数据,由键映射到值,核心在于Key上.  特征:键不能重复,值可以重复:key-value允许为null.     HashMap   Since ...

  5. Python--时间模块time模块

    原地址:https://finthon.com/python-time/ Python时间模块——time模块 简介 在数据处理当中,经常会碰到处理时间的问题.比如:在序列预测的过程中,需要通过学习一 ...

  6. WUSTOJ 1247: 递增或递减排序(Java)

    1247: 递增或递减排序 题目   有n个整数,求它的递增排序序列或递减排序序列.更多内容点击标题. 分析 统一升序排序,输出的时候做区分. 先区分是升序还是降序,调用库函数. 代码   方法1,将 ...

  7. 使用QFileInfo类获取文件信息(文件的所有权和权限检查在默认情况下是被禁用的。要使能这个功能 extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;)

    QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接,等等.并且,通过这个类,可以修改文件的大小和最后修改.读取时间.同时,QFi ...

  8. [Vue]vue-loader作用

    一.vue文件 vue文件是一个自定义的文件类型,用类HTML语法描述一个vue组件,每个.vue组件包含三种类型的顶级语言快< template>< script>< ...

  9. (二)easyUI之消息提示框

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  10. (十三)使用handler实现登录验证

    一.Handel概念 J2EE Web 服务中的Handler技术特点非常像Servlet技术中的Filter.我们知道,在Servlet中,当一个HTTP到达服务端时,往往要经过多个Filter对请 ...