POJ 3522 Slim Span
题目链接http://poj.org/problem?id=3522
kruskal+并查集,注意特殊情况比如1,0 、0,1、1,1
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<climits>
using namespace std;
#define MAXN 5005
struct edge{
int u,v,cost;
};
int comp(const edge& e1,const edge& e2){
return e1.cost<e2.cost;
}
edge es[MAXN];
int V,E;
int par[MAXN],rank[MAXN];
void init(){
for(int i=;i<=V;i++){
par[i]=i;
}
}
int find(int x){
if(par[x]==x)return x;
return par[x]=find(par[x]);
}
void unite(int x,int y){
x=find(x);
y=find(y);
if(x!=y){
par[x]=y;
}
}
bool same(int x,int y){
return find(x)==find(y);
}
int kruskal(int k){
init();
int min,max=-;
int esum=;
for(int i=k;i<E;i++){
if(E-k<V-)break;
edge e=es[i];
if(!same(e.u,e.v)){
unite(e.u,e.v);
esum++;
max=max<e.cost?e.cost:max;
}
if(esum==V-){
min=es[k].cost;
return max-min;
}
}
return -;
}
int main()
{
int i,flag=;
while(scanf("%d%d",&V,&E)==){
if(V==&&E==)break;
for(i=;i<E;i++){
scanf("%d%d%d",&es[i].u,&es[i].v,&es[i].cost);
}
if(E==||V>||E<V-){
printf("-1\n");continue;}
sort(es,es+E,comp);
int min=INT_MAX,x;
for(i=;i<E-V+;i++){
x=kruskal(i);
if(min>x&&x!=-){
min=x;
}
}
if(min!=INT_MAX)
printf("%d\n",min);
else
printf("-1\n");
}
return ;
}
POJ 3522 Slim Span的更多相关文章
- poj 3522 Slim Span (最小生成树kruskal)
http://poj.org/problem?id=3522 Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions ...
- POJ 3522 Slim Span 最小差值生成树
Slim Span Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3522 Description Gi ...
- POJ 3522 Slim Span(极差最小生成树)
Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 9546 Accepted: 5076 Descrip ...
- POJ 3522 ——Slim Span——————【最小生成树、最大边与最小边最小】
Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7102 Accepted: 3761 Descrip ...
- POJ 3522 - Slim Span - [kruskal求MST]
题目链接:http://poj.org/problem?id=3522 Time Limit: 5000MS Memory Limit: 65536K Description Given an und ...
- POJ 3522 Slim Span 暴力枚举 + 并查集
http://poj.org/problem?id=3522 一开始做这个题的时候,以为复杂度最多是O(m)左右,然后一直不会.最后居然用了一个近似O(m^2)的62ms过了. 一开始想到排序,然后扫 ...
- POJ 3522 Slim Span 最小生成树,暴力 难度:0
kruskal思想,排序后暴力枚举从任意边开始能够组成的最小生成树 #include <cstdio> #include <algorithm> using namespace ...
- POJ 3522 Slim Span (Kruskal枚举最小边)
题意: 求出最小生成树中最大边与最小边差距的最小值. 分析: 排序,枚举最小边, 用最小边构造最小生成树, 没法构造了就退出 #include <stdio.h> #include < ...
- Poj(3522),UVa(1395),枚举生成树
题目链接:http://poj.org/problem?id=3522 Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submis ...
随机推荐
- .net 反编译利器 dnspy
Binaries Latest release: https://github.com/0xd4d/dnSpy/releases Latest build (possibly unstable): h ...
- 学习DSP(三)安装C2833x/C2823x C/C++ 头文件和外设示例-压缩包
进入http://www.ti.com.cn/product/cn/tms320f28335 下载C2833x/C2823x C/C++ 头文件和外设示例 即SPRC530,目前最新版本是V131.安 ...
- Java程序员面试题集(136-150)(转)
转:http://blog.csdn.net/jackfrued/article/details/17740651 Java程序员面试题集(136-150) 摘要:这一部分主要是数据结构和算法相关的面 ...
- 在线CRC校验
在线CRC校验: http://www.lammertbies.nl/comm/info/crc-calculation.html
- 怎样为virtualbox添加新的分辨率
virtualbox是个相当NB的开源跨平台虚拟机软件,只是新创建的虚拟机仅仅支持几种分辨率.比如.安装win8.1,仅仅有例如以下图的几种分辨率. 只是我的显示器是5K哦,这么点分辨率,简直是搞笑. ...
- [python笔记][第二章Python序列-list]
2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...
- hdu1106 字符串水题strtok()&&strchr()&&sscanf()+atoi()使用
字符串的题目 用库函数往往能大大简化代码量 以hdu1106为例 函数介绍 strtok() 原型: char *strtok(char s[], const char *delim); 功能: 分解 ...
- httpwatch 9.3怎么在ie 8上看不到
首先,确认HttpWatch Basic加载项是否启动:打开IE,单击工具图标并选择管理加载项.确认HttpWatch Basic的状态是已启用,点击关闭.之后打开某个网页,在页面空白处右击选择Htt ...
- ARCGIS接口详细说明
ArcGIS接口详细说明 目录 ArcGIS接口详细说明... 1 1. IField接口(esriGeoDatabase)... 2 2. IFieldEdit接口(esriGe ...
- windows 7 旗舰版 切换 中英文 界面
http://jingyan.baidu.com/article/f7ff0bfc4963612e26bb131e.html 如果遇到:想下载英语语言包,但是出现代码80070643,windowsu ...