UVa1395(最小值最小生成树+并查集)
//思路:用结构体保存一条边的信息(u,v,w),因为是求最小的生成树,所以把边排序后,从最小的边(起点)依次枚举可以构成的生成树
AC源码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;const int INF=(1<<30);
int n,m,MIN_NUM=INF,p[105];int findset(int x)
{return p[x]==x?x:p[x]=findset(p[x]);
}
struct Edge
{int u,v,w;Edge(int a,int b,int c):u(a),v(b),w(c){}bool operator<(const Edge& rhs){return w<rhs.w;}
};vector<Edge> Evec;
void solve()
{int len=Evec.size();for(int i=0;i<=len-(n-1);++i){int cnt=n;for(int k=1;k<=n;++k)p[k]=k; for(int j=i;j<len;++j){int x=findset(Evec[j].u),y=findset(Evec[j].v);if(x!=y){p[x]=y;if(--cnt==1){MIN_NUM=min(MIN_NUM,Evec[j].w-Evec[i].w);break;}}}}
}int main()
{while(scanf("%d %d",&n,&m)&&n){Evec.clear();int u,v,w;while(m--){scanf("%d %d %d",&u,&v,&w);Evec.push_back(Edge(u,v,w));}sort(Evec.begin(),Evec.end());MIN_NUM=INF;solve();if(MIN_NUM==INF)printf("-1\n");elseprintf("%d\n",MIN_NUM);}return 0;
}
UVa1395(最小值最小生成树+并查集)相关推荐
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1233 模板题,kruskal求最小生成树. 并查集是个好东西啊 就是注意一点 输入边的信息时,角标 ...
- 4th 【最小生成树并查集】征兵
征兵 [题目描述]: 一个国王,他拥有一个国家.最近他因为国库里钱太多了,闲着蛋疼要征集一只部队要保卫国家.他选定了N个女兵和M个男兵,但事实上每征集一个兵他就要花10000RMB,即使国库里钱再多也 ...
- hdu 1232 畅通工程 最小生成树 并查集
1232的连接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 #include <iostream>#include <cstdio& ...
- UOJ14 UER #1 DZY Loves Graph(最小生成树+并查集)
显然可以用可持久化并查集实现.考虑更简单的做法.如果没有撤销操作,用带撤销并查集暴力模拟即可,复杂度显然可以均摊.加上撤销操作,删除操作的复杂度不再能均摊,但注意到我们在删除时就可以知道他会不会被撤销 ...
- 村村通工程 最小生成树+并查集
问题 D: 村村通工程 时间限制: 1 Sec 内存限制: 128 MB 题目描述 某国有N个村子,M条道路,为了实现"村村通工程",现在要"油漆"N-1条道路 ...
- jzoj3237-间谍派遣【最小生成树,并查集】
正题 题目大意 一张图,第iii个点参加任务需要mkimk_imki元,连接一条边需要一定费用,要求每个联通图都有参加任务的点,求最小费用. 解题思路 其实就是求若干个最小生成树然后这个最小生成树的 ...
- jzoj2940-生成输入数据【最小生成树,并查集】
正题 题目大意 给一个完全图的唯一一颗最小生成树,求完全图最小边权之和. 解题思路 我们考虑在计算最小生成树的时候,将两个联通块合并时,我们会选择连接这两个联通块的最小的边. 那么我们就可以让每个联通 ...
- LeetCode 1489. 找到最小生成树里的关键边和伪关键边(并查集+kruskal最小生成树)
文章目录 1. 题目 2. 解题 1. 题目 给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1 ,同时还有一个数组 edges ,其中 edges[i] = [fromi, toi, w ...
- 最小生成树——洛谷并查集、口袋的天空
最小生成树--并查集 简单模板题-洛谷3367并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入格式 第一行包含两个整数 N,MN,M ,表示共有 NN 个元素和 MM 个操作 ...
最新文章
- mysql galaxy_优化mysql
- c#中反射技术在Unity中的运用
- python numpy.meshgrid() 函数的用法(快速生成坐标矩阵)
- select_arg_from_python相关的测试程序
- ssh免密登录(普通用户和root用户)
- Java并行计算线程池_干货!线程池+CountDownLatch,实现 多线程并发计算、汇总
- Android EditText 赋值与取值
- NIFI如何利用eclipse开发自己的Processor(下)
- windows10彻底杀死卡死的顽固进程
- js 省市下拉列表联动
- python办公自动化案例-用python进行办公自动化都需要学习什么知识呢?
- SpringSecurity系列(五) Spring Security 权限设计
- 开课吧Java课堂:什么是流?如何运用字节流和字符流?
- Cesium笔记(3):基本控件简介—ImageryProvider地图瓦片地图配
- 微信小程序中使用emoji表情
- 算法导论适合c语言吗,看《算法导论》需要多好的数学基础?
- win10修改用户名_大神帮您win10系统用户文件夹改名的修复方法
- 弘辽科技:淘宝直通车显示排查下架是什么?还能推广吗?
- Android插件化换肤
- ThreadLocal源码解析2.ThreadLocalMap