UVa 1265 Tour Belt Kurscal 变型
2015-09-07 08:23
309 查看
题意:给你一个n个点m条边的无向图,让你求出所有的集合,其中这个集合内的所有边都要大于这个集合边界的边 输出所有符合的集合的元素和。
思路:其实就是按照Kruscal的思想,首先边从大到小排序,然后两个端点如果在同一集合则忽略,否则将这两个集合合并 然后判断这个集合内部的最小边是否大于集合边界的最大边,若大于则答案加上这个集合的元素个数,否则忽略。
思路:其实就是按照Kruscal的思想,首先边从大到小排序,然后两个端点如果在同一集合则忽略,否则将这两个集合合并 然后判断这个集合内部的最小边是否大于集合边界的最大边,若大于则答案加上这个集合的元素个数,否则忽略。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 5000 + 10; const int maxe = 13000000 + 10; struct Edge{ int u, v, d; Edge(int u = 0, int v = 0, int d = 0) : u(u), v(v), d(d) {} bool operator < (const Edge &rhs) const{ return d > rhs.d; } }; int n, m; int pa[maxn]; Edge edge[maxe]; int find_set(int x){ return pa[x] == x ? x : pa[x] = find_set(pa[x]); } int judge(int be){ int ans = 0; int min_e = 1e9, max_e = 0; for(int i = 0; i < m; i++){ int x = find_set(edge[i].u); int y = find_set(edge[i].v); if(x == be && y == be) min_e = min(min_e, edge[i].d); else if(!(x != be && y != be)) max_e = max(max_e, edge[i].d); } if(min_e <= max_e) return 0; for(int i = 1; i <= n; i++) if(find_set(i) == be) ans++; return ans; } int Kruscal(){ for(int i = 1; i <= n; i++) pa[i] = i; sort(edge, edge + m); int ans = 0, cnt = 0; for(int i = 0; i < m; i++){ int x = find_set(edge[i].u); int y = find_set(edge[i].v); if(x != y){ pa[y] = x; ans += judge(x); if(++cnt == n-1) return ans; } } return ans; } void solve(){ scanf("%d%d", &n, &m); for(int i = 0; i < m; i++){ int u, v, d; scanf("%d%d%d", &u, &v, &d); edge[i] = Edge(u, v, d); } printf("%d\n", Kruscal()); } int main() { int T; scanf("%d", &T); while(T--) solve(); return 0; }
相关文章推荐
- android listView 全部展开,并且点击Item有效,可以用scrollView包裹,实现整体滑动
- public static <T> List<T> asList(T... a) 原型是怎么回事?
- codeforce 568A Primes or Palindromes?
- 浅谈Android布局
- 1010--注解Annotation
- 浅谈Android布局
- php利用smtp类轻松的发送电子邮件
- Bubble Cup 8 - Finals [Online Mirror] - A.Fibonotci【分段+ST表】
- 黄聪:TinyMCE 4 增强 添加样式、按钮、字体、下拉菜单和弹出式窗口
- Qt5.2 for Android 配置及部署到手机运行
- 学习日志---哈夫曼树相关算法
- Objective-C 【protocol-协议 的了解使用】
- Objective-C 【protocol-协议 的了解使用】
- SharePoint 2010商业智能组件
- Javascript中Promise对象的实现
- 编译cloog for gcc 4.8.5 问题
- 基于XML的Spring AOP配置
- 数据结构之自建算法库——顺序表
- universalimageloader uil doesn't support scheme(protocol
- HTML学习-网页主体标记body(一)