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;
}
- 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 数组属性和方法
- 3D旋转标签云
- 震惊! GC原来是这个样子.
- 2020-09-21:已知最大公约数和最小公倍数,如何判断这两个数是否存在?
- 如何设计一个牛逼的API接口(技术创作101训练营)
- shell 运算符; 判断中 if -a 与运算 -o或运算
- Linux crond 计划任务添加
- linux 环境下安装使用 git
- linux下禁止root ssh远程登录和添加允许新用户登录ssh
- Python 常见数据结构整理
- mapreduce的二次排序-分区分组
- GATK RNA-Seq Snps Indel 分析
- 【技术创作101训练营】腾讯云主机上部署 FRP+Teamviewer 穿透内网进行远程运维
- 图像处理笔记(7)---- OpenCV 绘制无填充矩形
- 图像处理笔记(8)---- OpenCV 获取追踪对象的HSV值
- (数据科学学习手札95)elyra——jupyter lab平台最强插件集