Is It A Tree?(并查集)
时间:2022-05-08
本文章向大家介绍Is It A Tree?(并查集),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
判断树是否唯一
1.只有一个根节点,(1)在一棵树上一个根节点。1 2 3 2就是两个根节点(1)只有一棵树
2.不成环,入度不大于1
由于数组运行超界导致wa,这是老毛病了 还一直错
#include<stdio.h>
const int MAXN=1000100;
int father[MAXN],rank[MAXN];
struct Node
{
int x,y;
} node[MAXN];
void Make_set()
{
for(int i=1; i<MAXN; i++)
{
rank[i]=0;
father[i]=i;
}
}
int Find(int x)
{
int r=x;
while(r!=father[r])
{
r=father[r];
}
if(r!=x) father[x]=r;
return father[x];
}
void Union(int x,int y)
{
//秩小的加到大的里
/* if(rank[x]>rank[y])
{
father[y]=x;
}
else
{
if(rank[x]==rank[y])
{
rank[y]++;
}
father[x]=y;
}*/
father[y]=x;
}
int main()
{
int cas,flag,i;
int tes=1;
while(1)
{
cas=flag=0;
while(scanf("%d%d",&node[cas].x,&node[cas].y))
{
if(node[cas].x==-1 && node[cas].y==-1) return 0;
if(node[cas].x==0 && node[cas].y==0) break;
cas++;
}
Make_set();
for(i=0; i<cas; i++)
{
int x=Find(node[i].x);
int y=Find(node[i].y);
if(x==y)
{
flag=1;
}
else Union(x,y);
}
int temp=Find(node[0].x);
for(i=0; i<cas; i++)
{
if(Find(node[i].x)!=temp) flag=1;
if(Find(node[i].y)!=temp) flag=1;
}
if(flag) printf("Case %d is not a tree.n",tes++);
else printf("Case %d is a tree.n",tes++);
}
return 0;
}
- opensuse nginx+mono 2.8支持aspx环境的配置
- android-async-http详解
- java线程间通信
- android scrollview嵌套listview计算高度的问题
- 手把手教你安装深度学习软件环境(附代码)
- IntentService简介
- android 网络通信框架volly
- 仿iphone快速导航悬浮球
- WCF Data Service QuickStart
- 仿支付宝手势密码
- android仿iphone的地区选择
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- Elcipse安装gradle插件
- android View层的绘制流程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 找找数学上的规律——LeetCode题目11:盛最多水的容器
- Java学习笔记, 不断更新
- 这题真是送分——LeetCode题目12:整数转罗马数字
- 该了解一波了!零基础入门Nginx
- 轻松一刻——LeetCode题目13:罗马数字转整数
- 动动手——LeetCode题目14:最长公共前缀
- LeetCode题目15:三数之和
- 三数之和姊妹题——LeetCode题目16:最接近的三数之和
- 组合问题——LeetCode题目17:电话号码的字母组合
- Python读取PDF文档并翻译
- n数之和题目要类比——LeetCode题目18:四数之和
- SpringBoot使用MySQL访问数据
- MySQL数据库与JDBC编程
- 自动删除QQ空间指定好友的留言
- 在Ubuntu 18.04中安装VMware工具