博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1955 [NOI2015]程序自动分析
阅读量:5103 次
发布时间:2019-06-13

本文共 1816 字,大约阅读时间需要 6 分钟。

Description

给定多个 $ x_i  x_j $ 是否相等的条件

判断能否实现给每个 $  x_ i  $赋上合适的值满足条件

Solution

考虑用并查集实现

若两个数相等,则表示它们的祖先相同

给出的条件要先排序,把所有相同的条件放在前面先处理

数的范围很大,并查集数组开不下,需要离散化一下

Code

#pragma GCC optimize(3)#include 
using namespace std;const int N = 1000005;int T, n, f[N], hash[N], tot = 0; struct Node { int a, b, c;}u[N];int getf(int u) { return u == f[u] ? u : f[u] = getf(f[u]);}template
void read(T &t) { t = 0; T m = 1; char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-') m = -1; ch = getchar(); } while(ch >= '0' && ch <= '9') { t = (t << 3) + (t << 1) + (ch & 15); ch = getchar(); } t *= m;}bool cmp(const Node &a, const Node &b) { return a.c > b.c;}int main() { read(T); while(T--) { tot = 0; memset(f, 0, sizeof(f)); read(n); bool fl = true; for(register int i = 1; i <= n; i++) { read(u[i].a), read(u[i].b), read(u[i].c); hash[++tot] = u[i].a; hash[++tot] = u[i].b; } sort(hash + 1, hash + tot + 1); int siz = unique(hash + 1, hash + tot + 1) - hash - 1; for(register int i = 1; i <= n; i++) { u[i].a = lower_bound(hash + 1, hash + siz + 1, u[i].a) - hash; u[i].b = lower_bound(hash + 1, hash + siz + 1, u[i].b) - hash; } for(register int i = 1; i <= siz * 2; i++) f[i] = i; sort(u + 1, u + n + 1, cmp); for(register int i = 1; i <= n; i++) { int A = u[i].a, B = u[i].b, C = u[i].c; int F1 = getf(A), F2 = getf(B); if(C == 0) { if(F1 == F2) { fl = false; break; } } else { if(F1 != F2) f[F1] = f[F2]; } } printf("%s\n", fl ? "YES" : "NO"); } return 0;}

转载于:https://www.cnblogs.com/chloristendika/p/10352124.html

你可能感兴趣的文章
拉格朗日乘子法 那些年学过的高数
查看>>
vs code 的便捷使用
查看>>
Spring MVC @ResponseBody返回中文字符串乱码问题
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JS 中的跨域请求
查看>>
JAVA开发环境搭建
查看>>
mysql基础语句
查看>>
Oracle中的rownum不能使用大于>的问题
查看>>
[Data Structure & Algorithm] 有向无环图的拓扑排序及关键路径
查看>>
cassandra vs mongo (1)存储引擎
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
遍历Map对象
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
#Leetcode# 209. Minimum Size Subarray Sum
查看>>
SDN第四次作业
查看>>
DM8168 DVRRDK软件框架研究
查看>>
django迁移数据库错误
查看>>
yii 跳转页面
查看>>
洛谷 1449——后缀表达式(线性数据结构)
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>