NOI2015 洛谷P1955 程序自动分析(并查集+离散化)
2024-09-08 11:42:28
这可能是我目前做过的最简单的一道noi题目了......
先对e=1的处理,用并查集;再对e=0查询,如果这两个在同一集合中,则为“”NO“,最后都满足的话输出”“YES”;
数值很大,用一下离散化就行了。
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=1e6+10;
4 int t,n,fa[N],b[N*3];
5 struct node{
6 int x,y,e;
7 }a[N];
8 bool cmp(node a,node b){//e=1的放在前面
9 return a.e>b.e;
10 }
11 int get(int x){
12 return fa[x]==x?fa[x]:fa[x]=get(fa[x]);
13 }
14 int main(){
15 scanf("%d",&t);
16 while(t--){
17 int tot=0;
18 memset(b,0,sizeof(b));
19 memset(a,0,sizeof(a));
20 memset(fa,0,sizeof(fa));
21 int vis=1;
22 scanf("%d",&n);
23 for(int i=1;i<=n;i++){
24 scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].e);
25 b[++tot]=a[i].x;b[++tot]=a[i].y;
26 }
27 sort(b+1,b+tot+1);
28 int cnt=unique(b+1,b+tot+1)-b-1;
29 for(int i=1;i<=n;i++){
30 a[i].x=lower_bound(b+1,b+cnt+1,a[i].x)-b;
31 a[i].y=lower_bound(b+1,b+cnt+1,a[i].y)-b;
32 }
33 for(int i=1;i<=cnt;i++) fa[i]=i;
34 sort(a+1,a+n+1,cmp);
35 for(int i=1;i<=n;i++){
36 int r1=get(a[i].x);
37 int r2=get(a[i].y);
38 if(a[i].e){
39 fa[r1]=r2;
40 }
41 else if(r1==r2){
42 cout<<"NO"<<endl;
43 vis=0;
44 break;
45 }
46 }
47 if(vis) cout<<"YES"<<endl;
48 }
49 }
最新文章
- 在Excel中使用SQL语句查询和筛选
- 开始JavaScript
- SQL sp_executesql【转】
- Javascript 装载和执行(copy的感觉有很多错误。。)
- 两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];
- HDU 4763 (KMP算法)
- 月薪10K必备--C#下拉框联动
- Android 体系结构
- java中使用URLClassLoader访问外部jar包的java类
- php随笔2-php+ajax 实现输入读取数据库显示匹配信息
- 如何查看自己电脑支持OpenGL core版本
- 201521123018 《Java程序设计》第1周学习总结
- web前端——10个妨碍进步的学习方式
- laravel 读写分离源码解析
- TensorFlow资料汇总
- .NET中的泛型集合总结
- 运维面试题之linux基础
- XamarinSQLite教程在Xamarin.Android项目中提取数据库文件
- Azure CosmosDB (2) CosmosDB中的数据一致性
- 接口测试3A原则
热门文章
- DQL基础查询和DQL条件查询
- 前端监控系列1| 字节的前端监控SDK是怎样设计的
- MyBatis 03 缓存
- Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。
- 微服务性能分析|Pyroscope 在 Rainbond 上的实践分享
- TS 泛型推断好难啊,看看你能写出来不
- JavaScript(上)
- 学军中学第三届“图灵杯”趣味网络邀请赛——中级T4.欧拉回路 (图论,哈希)
- laravel框架中验证后在页面提示错误信息
- 完全解析Array.apply(null, { length: 1000 })