zoukankan      html  css  js  c++  java
  • (step5.1.5)hdu 1856(More is better——DFS)

    题目大意:输入一个整数n,表示有n对朋友,接下来给出n对朋友。。。输出最大的集合中的人数(即,秋季喝的最大的秩)


    解题思路:并查集

    1)按秩的大小来插。即

    if( fx != fy){
    		//这里根据秩的大小来插入
    		if(rank[fx] > rank[fy]){
    			rank[fx] += rank[fy];
    			father[fy] = fx;
    		}else{
    			rank[fy] += rank[fx];
    			father[fx] = fy;
    		}
    	}


    2)需要求出秩的最大值

    int max = -1;
    		for( i = 1 ; i<= 10000001 ; ++i){
    			if(rank[i] > max){
    				max = rank[i];
    			}
    		}



    代码如下:

    /*
     * 1856_2.cpp
     *
     *  Created on: 2013年8月23日
     *      Author: Administrator
     */
    
    
    #include <iostream>
    
    using namespace std;
    
    /**
     * father[i] :用来保存当前节点的父亲节点
     * rank[i] :用来保存当前节点的秩(即当前节点包含了多少节点)
     *
     */
    int father[10000001];
    int rank[10000001];
    
    int find(int a){
    	if( a == father[a]){
    		return a;
    	}
    
         father[a] = find(father[a]);
         return father[a];
    }
    
    void join(int x , int y){
    	int fx = find(x);
    	int fy = find(y);
    
    	if( fx != fy){
    		//这里根据秩的大小来插入
    		if(rank[fx] > rank[fy]){
    			rank[fx] += rank[fy];
    			father[fy] = fx;
    		}else{
    			rank[fy] += rank[fx];
    			father[fx] = fy;
    		}
    	}
    }
    
    void make_set(){
    	int i;
    	for( i = 1 ; i<= 10000001 ; ++i){
    		father[i] = i;
    		rank[i] = 1;
    	}
    }
    
    
    int main(){
    	int n;
    	while(scanf("%d",&n)!=EOF){
    		memset(rank,0,sizeof(rank));
    		memset(father,0,sizeof(father));
    		make_set();
    		int i;
    		for( i = 1 ; i <= n ; ++i ){
    			int a,b;
    			scanf("%d%d",&a,&b);
    			join(a,b);
    		}
    
    		//以下代码用来求秩的最大值
    		int max = -1;
    		for( i = 1 ; i<= 10000001 ; ++i){
    			if(rank[i] > max){
    				max = rank[i];
    			}
    		}
    		printf("%d
    ",max);
    	}
    }
    
    
    



  • 相关阅读:
    布局总结记录:居中、整页、多列、圣杯、双飞翼等布局看过来!
    BFC系统理解,文字环绕布局左右自适应布局揭秘!
    CSS变量,实现条形加载
    CSS盒模型理解
    回流与重绘理解,助攻CSS
    ASP.NET压力测试
    steelray project viewer
    设置文件上传的最大大小
    Ext.grid.GridPanel属性及方法等
    Extjs Ext.grid.column.Column 隐藏显示列
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3279929.html
Copyright © 2011-2022 走看看