树的专题整理(二)
来源:互联网 发布:mysql enum创建 编辑:程序博客网 时间:2024/05/16 00:24
1、POJ 2485
题目与分析:
这道题抽象一下:“是求最小生成树的最大边”
2)使用kruscal算法来解决
- /*
- * POJ_2485_kruscal.cpp
- *
- * Created on: 2014年6月11日
- * Author: Administrator
- */
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- using namespace std;
- const int maxn = 505;
- const int maxm = maxn*maxn;
- const int inf = 9999999;
- int map[maxn][maxn];
- int father[maxn];
- int find(int x) {
- if (x == father[x]) {
- return x;
- }
- father[x] = find(father[x]);
- return father[x];
- }
- void merge(int x, int y) {
- int fx = find(x);
- int fy = find(y);
- if (fx != fy) {
- father[fx] = fy;
- }
- }
- struct Edge{
- int begin;
- int end;
- int weight;
- int selected;
- }edge[maxm];
- bool cmp(Edge a,Edge b){
- if(a.weight != b.weight){
- return a.weight < b.weight;
- }
- if(a.begin < b.begin){
- return a.begin < b.begin;
- }
- return a.end < b.end;
- }
- int n,m;
- int maxe;
- int kruscal(){
- int sum = 0;
- int i;
- for(i = 1 ; i <= n ; ++i){
- father[i] = i;
- }
- sort(edge+1,edge+1+m,cmp);
- int k = 0;
- for(i = 1 ; i <= m ; ++i){
- if( k == n-1){
- break;
- }
- int x = find(edge[i].begin);
- int y = find(edge[i].end);
- if(x != y){
- merge(x,y);
- k++;
- edge[i].selected = true;
- sum += edge[i].weight;
- maxe = edge[i].weight;//用来记录最下生成树中当前的最大边
- }
- }
- return sum;
- }
- int main(){
- int t;
- scanf("%d",&t);
- while(t--){
- scanf("%d",&n);
- m = 1;
- int i;
- int j;
- for(i = 1 ; i <= n ; ++i){
- for(j = 1 ; j <= n ; ++j){
- scanf("%d",&map[i][j]);
- }
- }
- for(i = 1 ; i <= n ; ++i){
- for(j = i+1; j <= n ; ++j){
- edge[m].begin = i;
- edge[m].end = j;
- edge[m].weight = map[i][j];
- edge[m++].selected = false;
- }
- }
- kruscal();
- printf("%d\n",maxe);
- }
- return 0;
- }
0 0
- 树的专题整理(二)
- 树的专题整理(二)
- (树的专题整理)
- (图的遍历专题整理)
- 线段树专题(二)
- 图的连通性问题专题整理
- linux专题二:内核配置的部分
- python多线程专题整理
- 技术专题整理
- 图论专题整理
- Tree Dp专题整理
- 【专题】树的重心
- 《【专题四】Rootkit的学习与研究》文章整理下载
- Java的面试题整理一(线程专题篇)
- IOS开发系列——UIView专题之二:动画篇【整理,部分原创】
- 专题二 符号的技巧---- 13.++,--操作符的分析
- SQL注入专题--整理帖
- SQL注入专题--整理帖
- 编辑文章 - 博客频道 - CSDN.NET
- win8.1体验
- Android 4.4.2 emulator64-x86 sdcard Read-Writer
- “企鹅”的野心
- Python入门
- 树的专题整理(二)
- ubuntu12.10中文输入法安装
- windows8.1新体验
- json 数据格式与 lua
- 如何将HDL文件实例化到XPS中
- centos上安装vmware tools
- 打四大四大四大是现在想
- 初识Win8与Win8 App开发
- WireShark