HDU 1856
http://acm.split.hdu.edu.cn/showproblem.php?pid=1856

对于这道题,主要就是让你求出有最多结点的树的树叶;
我们只要利用并查集的知识吧所输入的数据连接成树,然后逐一找出树叶最多的树就可以。利用一个num数组,在最开始的时候每个节点自己是一颗树,num[i]=1;在之后把在同一个父亲结点的num[i]连接起来。
再逐一查找出最大的就可以啦。
思路就是这样啊,可是我的提交上就是wa,心灰意冷啊,啊,啊啊,啊啊啊。我把我的代码贴上面,希望大神们看见帮我改一改。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int M=;
int fa[M],num[M];
void init(){
for(int i=;i<=M;i++){
fa[i]=i;
num[i]=;
}
}
int fin(int x){
return fa[x]=x?fa[x]:fa[x]=fin(fa[x]);
}
void unin(int x,int y){
int p=fin(x);
int q=fin(y);
if(p!=q){
fa[p]=q;
num[q]+=num[p];
}
}
int main()
{
int n,a,b;
while(~scanf("%d",&n)){
if(n==){
printf("1\n");
continue;
}
int ans=;
init();
for(int i=;i<n;i++){
scanf("%d%d",&a,&b);
if(a>ans)ans=a;
if(b>ans)ans=b;
unin(a,b); }
int maxn=;
for(int i=;i<=ans;i++){
if(num[i]>maxn)
maxn=num[i];
}
cout<<maxn<<endl;
}
return ;
}
下面的这个是我在网上查找的大神的代码,我俩除啦参数之外是一样一样的啊,我的咋就不过呢。。。。。
#include<stdio.h>
#define N 10000000
int father[N],num[N];
void initial()/*初始化*/
{
int i;
for(i=;i<=N;i++)
{
father[i]=i;
num[i]=;/*开始时数量都为1,根节点为自己*/
}
}
int find(int x) /*寻找根节点*/
{
if(father[x]!=x)
father[x]=find(father[x]);
return father[x];
}
void merge(int a,int b)/*合并a和b*/
{
int p=find(a);
int q=find(b);
if(p!=q)
{
father[p]=q;
num[q]+=num[p];/*合并集合中元素个数*/
}
}
int main()
{
int n,a,b,i,sum,max;
while(~scanf("%d",&n))
{
if(n==)
{
printf("1\n");
continue;
}
max=;
initial(); /*初始化*/
for(i=;i<n;i++)
{
scanf("%d%d",&a,&b);
if(a>max)
max=a;
if(b>max)
max=b;
merge(a,b); /*合并集合*/
}
int Max=;
for(i=;i<=max;i++)
if(num[i]>Max) /*查找最大值*/
Max=num[i];
printf("%d\n",Max);
}
return ;
}
HDU 1856的更多相关文章
- 简单并查集 -- HDU 1232 UVALA 3644 HDU 1856
并查集模板: #include<iostream> using namespace std; ],x,y; ]; //初始化 x 集合 void init(int n) { ; i< ...
- HDU 1856 More is better(并查集+离散化)
题目地址:HDU 1856 水题.因为标号范围太大,而数据数仅仅有10w,所以要先进行离散化.然后就是裸的并查集了. 代码例如以下: #include <iostream> #includ ...
- HDU(1856),裸的带权并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1856 题意:朋友圈问题,A和B是朋友,B和C是朋友则A和C也是朋友,依次类推,题目的意思就是求最大的朋 ...
- HDU 1856 More is better(并查集)
http://acm.hdu.edu.cn/showproblem.php?pid=1856 More is better Time Limit: 5000/1000 MS (Java/Others) ...
- HDU 1856 并查集
http://acm.hdu.edu.cn/showproblem.php?pid=1856 More is better Time Limit: 5000/1000 MS (Java/Others) ...
- hdu 1856 More is better (并查集)
More is better Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others) ...
- HDU 1856 Brave Game(巴什博奕)
十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻. 今天,大家选择 ...
- Hdu 1856(离散化+并查集)More is better
题意:一些人遵循朋友的朋友也是朋友原则,现在找出最大的朋友圈, 因为人的编号比较大,但是输入的数据最多是10w行,所以可得出最多也就20w人,所以可以进行一下离散化处理,这样数据就会毫无压力 //// ...
- More is better(hdu 1856 计算并查集集合中元素个数最多的集合)
More is better Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others) ...
随机推荐
- MS CRM 2011的自定义和开发(11)——插件(plugin)开发(四)
http://www.cnblogs.com/StoneGarden/archive/2012/02/08/2343294.html MS CRM 2011的自定义和开发(11)——插件(plugin ...
- C#Random()函数详解
随机数的使用很普遍,可用它随机显示图片,用它防止无聊的人在论坛灌水还可以用来加密信息等等.本文讨论如何在一段数字区间内随机生成若干个互不相同的随机数,比如在从1到20间随机生成6个互不相同的整数,并通 ...
- java数组操作
@Bizlet("数据对象扩展运算逻辑")public class DataObjectExt { private DataObjectExt(){ //工具类不能实例化 } /* ...
- linux 解压,源码包
从网络上下载到的源码包, 最常见的是 .tar.gz 包, 还有一部分是 .tar.bz2包 要解压很简单 : .tar.gz 格式解压为 tar -zxvf ...
- Jquery中的offset()和position()
今天遇到这个偏移量的问题,特做此记录.以便日后查看. 先看看这两个方法的定义. offset(): 获取匹配元素在当前视口的相对偏移. 返回的对象包含两个整形属性:top 和 left.此方法只对可见 ...
- ios外包公司——技术分享:IOS开发教程
iOS入门培训,适合已经有C/C++/Java/C#基础的人学习. 本大仙主讲,总共4讲(第4讲尚在制作中),这仅仅是iOS开发的入门而已.学完本教程,应该已经足够你自学并开发app了. ...
- Python基础教程【读书笔记】 - 2016/7/10
希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第五波:第1章 基础知识 [总览] 介绍如何得到所需的软件,然后讲一点点算法及其主要的组成.学习变量variable ...
- 剑指offer系列22--二叉树中和为某一值的路径
22[题目]输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径. * 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 * [思路]只要从根结点到叶结点一条一条遍 ...
- Puppet's Architecture 3.7
Puppet configures systems in two main stages: Compile a catalog Apply the catalog The Agent/Master A ...
- (C# Debug)A first chance exception of type 'System.ArgumentException' occurred in System.Data.dll
Debug 模式下运行程序的时候,Output 窗口出来个错误“A first chance exception of type 'System.ArgumentException' occurred ...