解题思路

输入的数据有满足约束和不满足约束,很明显我们能解决的是等于的情况,用并查集直接将相等的两个变量合并起来,并且我们很明显能发现是否满足条件和判断的顺序是无关的,所以我们可以先将相等的变量进行合并然后再判断后面不相等的是否满足即可(换句话说我们通过排序,先处理相等的变量,再处理),注意的是这里的i,j可能很大,所以我们不能直接开数组,于是我用的map表示的fa数组

Code

#include<bits/stdc++.h>
using namespace std;unordered_map<int,int> fa;const int N = 1e6+10;
struct Node {int a,b,c;
}V[N];bool cmp(Node a,Node b) {return a.c > b.c;
}int find(int x) {int t = x;while(t != fa[t]) t = fa[t];while(x != fa[x]) {int temp = fa[x];fa[x] = t;x = temp;}return x;
}void merge(int a,int b) {a = find(a);b = find(b);if(a != b) {fa[b] = a;}
}int main()
{int t,n;scanf("%d",&t);while(t--) {cin>>n;fa.clear();for(int i = 1;i <= n; ++i) {scanf("%d%d%d",&V[i].a,&V[i].b,&V[i].c);fa[V[i].a] = V[i].a;fa[V[i].b] = V[i].b;}sort(V+1,V+n+1,cmp);bool fg = true;for(int i = 1;i <= n; ++i) {if(V[i].c) {merge(V[i].a,V[i].b);}else {V[i].a = find(V[i].a);V[i].b = find(V[i].b);if(V[i].a == V[i].b) {fg = false;break;}}}if(fg) puts("YES");else   puts("NO");}return 0;
}

P1955 [NOI2015] 程序自动分析相关推荐

  1. P1955 [NOI2015]程序自动分析 离散化学习 lower_bound学习

    题目链接 https://www.luogu.org/problemnew/show/P1955 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题 ...

  2. 洛谷 P1955 [NOI2015]程序自动分析(沙雕题)

    题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3-代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相 ...

  3. bzoj 4195: [Noi2015]程序自动分析

    4195: [Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表 ...

  4. 【bzoj4195】[Noi2015]程序自动分析 离散化+并查集

    题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量 ...

  5. 【刷题】BZOJ 4195 [Noi2015]程序自动分析

    Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或x ...

  6. bzoj4195 [Noi2015]程序自动分析

    在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等 ...

  7. [NOI2015]程序自动分析

    题解:并查集,因为数据比较大嘛,你要是想再所以如果开1e9的数组大小,那毫无疑问,基佬紫等着你. 所以这个题离散化用了map这个容器. 首先,遍历一遍e=1的时候,把他们之间相等的都给连到同一个集合里 ...

  8. NOI2015 程序自动分析

    题目链接:戳我 就是并查集水题. #include<iostream> #include<cstdio> #include<cstring> #include< ...

  9. 程序自动分析(洛谷-P1955)

    题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...

最新文章

  1. 精通Python网络爬虫:核心技术、框架与项目实战.1.1 初识网络爬虫
  2. genrsa out php,PHP进行RSA加密解密
  3. Mysql忘记用户密码的解决办法
  4. CSS3属性box-sizing
  5. PTA 寻宝路线 (40 point(s))
  6. spark之4:基础指南(源自官方文档)
  7. 深入理解JDBC的超时设置
  8. 泰勒公式的展开细节解析、本质、联想与思考
  9. tcp 11种状态转换图
  10. linux命令之grep(详解)
  11. linux grep 日期,linux 文本处理工具之一grep命令详解
  12. android使用zxing生成二维码及带logo的二维码
  13. 顺序栈的实验报告c语言,顺序栈的基本操作(C语言)
  14. 使用SpringBoot完成RabbitMQ与Dubbo框架集成例程
  15. 计算机网络——第一章 计算机网络体系结构
  16. Promethues原理详解
  17. 如何求出二次贝塞尔曲线上面的各个点呢
  18. Tyrion (含示例源码)
  19. 转: Windows句柄数的限制
  20. java字符串流与管道流

热门文章

  1. ubuntu 16.0 CUDA 10.1卸载 CUDA 10.2 安装
  2. ValueError: could not broadcast input array from shape (*,*) into shape (*)
  3. 【Oracle】基础知识查漏补缺
  4. 第三周课程总结&实验报告一
  5. SQL*Plus 系统变量之32 - NEWP[AGE]
  6. walle多渠道打包+Tinker(bugly)热更新集成+360加固(乐固)
  7. Nginx配置优化解读
  8. 近期的技术问题让云供应商进行预设加密
  9. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
  10. 构建自己的PHP框架(邮件发送)