51nod 1515 明辨是非 启发式合并
1515 明辨是非
题目连接:
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1515
Description
给n组操作,每组操作形式为x y p。
当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等;否则输出NO,并忽略此次操作。
当p为0时,如果第x变量和第y个变量可以不相等,则输出YES,并限制他们不相等 ;否则输出NO,并忽略此次操作。
Input
输入一个数n表示操作的次数(n<=110^5)
接下来n行每行三个数x,y,p(x,y<=110^8,p=0 or 1)
Output
对于n行操作,分别输出n行YES或者NO
Sample Input
3
1 2 1
1 3 1
2 3 0
Sample Output
YES
YES
NO
题意
题解:
相同的,就直接并查集去维护就好了
不相同的,就set启发式合并去莽一波就好了
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5+7;
int n,m,cnt,x,y,op,fa[maxn];
unordered_map<int,int> H;
set<int>s[maxn];
set<int>::iterator it;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int fi(int x)
{
if(x==fa[x])return x;
fa[x]=fi(fa[x]);return fa[x];
}
void set_uni(int x,int y)
{
if(x==y)return;
if(s[x].size()>s[y].size())
{
for(it=s[y].begin();it!=s[y].end();it++)
{
s[x].insert(fi(*it));
s[fi(*it)].erase(y);
s[fi(*it)].insert(x);
}
s[y].clear();
fa[y]=x;
}
else
{
for(it=s[x].begin();it!=s[x].end();it++)
{
s[y].insert(fi(*it));
s[fi(*it)].erase(x);
s[fi(*it)].insert(y);
}
s[x].clear();
fa[x]=y;
}
}
int getid(int x)
{
if(H[x]==0)H[x]=++cnt;
return H[x];
}
void uni(int x,int y)
{
if(s[x].find(y)!=s[x].end()){printf("NO\n");return;}
printf("YES\n");
set_uni(x,y);
}
void spl(int x,int y)
{
if(x==y){printf("NO\n");return;}
printf("YES\n");
s[x].insert(y);
s[y].insert(x);
}
int main()
{
int n;scanf("%d",&n);
for(int i=0;i<maxn;i++)fa[i]=i;
for(int i=1;i<=n;i++)
{
x=read(),y=read(),op=read();
x=fi(getid(x)),y=fi(getid(y));
if(op==1)uni(x,y);
else spl(x,y);
}
}
51nod 1515 明辨是非 启发式合并的更多相关文章
- 51nod 1515 明辨是非 [并查集+set]
今天cb巨巨突然拿题来问,感觉惊讶又开心,希望他早日康复!!坚持学acm!加油! 题目链接:51nod 1515 明辨是非 [并查集] 1515 明辨是非 题目来源: 原创 基准时间限制:1 秒 空间 ...
- 51Nod 1515 明辨是非 —— 并查集 + 启发式合并
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1515 1515 明辨是非 题目来源: 原创 基准时间限制:1 ...
- 51nod 1515 明辨是非 并查集 + set + 启发式合并
给n组操作,每组操作形式为x y p. 当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等:否则输出NO,并忽略此次操作. 当p为0时,如果第x变量和第y个变量可以不相等,则输 ...
- [51nod 1515] 明辨是非
Description 给\(n\)组操作,每组操作形式为\(x\;y\;p\). 当\(p\)为\(1\)时,如果第\(x\)变量和第\(y\)个变量可以相等,则输出\(YES\),并限制他们相等: ...
- 51nod 1515 明辨是非 并查集+set维护相等与不等关系
考试时先拿vector瞎搞不等信息,又没离散化,结果好像MLE:后来想起课上讲过用set维护,就开始瞎搞迭代器...QWQ我太菜了.. 用并查集维护相等信息,用set记录不相等的信息: 如果要求变量不 ...
- 51nod 1515:明辨是非 并查集合并
1515 明辨是非 题目来源: 原创 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 收藏 关注 给n组操作,每组操作形式为x y p. 当p为1时,如果第x ...
- 51 nod 1515 明辨是非(并查集合并)
1515 明辨是非题目来源: 原创基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 给n组操作,每组操作形式为x y p. 当p为1时,如果第x变量和第y个变量可以 ...
- 51nod 1907(多项式乘法启发式合并)
题目: 分析: 对于一个确定的生成子图,很明显是在一个连通块上走,走完了再跳到另一个连通块上,假设连通块个数为cnt,那么答案一定是$min(a_{cnt-1},a_cnt,..,a_{n-1})$ ...
- [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)
Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...
随机推荐
- go 流程控制
if else 语句 基本语法 if condition { //do something } if condition { //do something } else if condition { ...
- USB descriptor【转】
struct usb_device_descriptor { __u8 bLength;//设备描述符的字节数大小,为0x12 __u8 bDescriptorType;//描述符类型编号,为0x01 ...
- python网络编程--线程使用threading
一:线程使用 线程使用有两种方法,一种是直接使用,二是通过继承threading.Thread类使用 二:函数式使用 函数式:调用thread模块中的start_new_thread()函数来产生新线 ...
- align="absmiddle" 的意义
align=absmiddle表示图像的中间与同一行中最大元素的中间对齐 AbsBottom 图像的下边缘与同一行中最大元素的下边缘对齐. AbsMiddle 图像的中间与同一行中最大元素的中间对 ...
- android解决AVD中文路径无法启动问题
在as中新建一个AVD,然而启动时却报错,总之是不能找到中文路径 然后这个虚拟设备被默认安装在了C盘我的用户李敏啊,而我用户名是中文名导致无法识别 解决办法,使用链接文件格式修改虚拟设备配置路径, 比 ...
- python3 安装
Centos7 安装python3 #安装sqlite-devel yum -y install sqlite-devel #安装依赖 yum -y install make zlib zlib-de ...
- C# Except
我们往往需要把一个列表中,去除另外一个列表的元素,C#提供了很好的方法,Except. 但是往往不小心就掉进坑里了. 看下面的代码: static void Main(string[] args) { ...
- 一步一步学习IdentityServer3 (7)
在介绍自定义用户服务之前先对IdentityServerServiceFactory说明下 Idr3的服务工厂 下面有很多idr3提供的接口服务, 如:ViewService.UserService. ...
- android练习
package com.example.wang.testapp2; import android.app.AlertDialog; import android.content.DialogInte ...
- CCF CSP 201503-4 网络延时
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-4 网络延时 问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机 ...