并查集专题
来源:互联网 发布:淘宝海外全球购 编辑:程序博客网 时间:2024/05/22 12:26
洛谷P3144 [USACO16OPEN]关闭农场关闭农场
离线的反着的并查集
看看在不在一个集合内
#include<cstdio>#include<queue>#include<cstring>#include<iostream>using namespace std;int n,m;int f[99999],a[3009][3099],b[3999];int ans[19999];int find(int x){ if(x==f[x])return x; int fx=find(f[x]); return f[x]=fx; }int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) f[i]=i; for(int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); a[x][y]=1; a[y][x]=1; } for(int i=1;i<=n;i++) scanf("%d",&b[i]); for(int i=n;i>=1;i--) { int fx=find(b[i]); for(int j=i;j<=n;j++) if(a[b[i]][b[j]]) { int fy=find(b[j]); f[fy]=fx; } int w=0,fz=0; for(int j=i;j<=n;j++) { fz=find(b[j]); if(w!=fz&&w!=0) ans[i]++; w=fz; } } for(int i=1;i<=n;i++) if(ans[i])printf("NO\n"); else printf("YES\n"); }
poj 1984导航噩梦
带权并查集
不过我就是过不了
请大佬给我找错2333
思路:
维护横坐标和纵坐标
通过输入的x-x1,y-y1
判断 父节点与父节点的距离
合并父节点
#include<cstdio>#include<queue>#include<cstring>#include<iostream>using namespace std;int n,m;int f[99999],disx[99999],disy[99999],f1[99999],f2[99999],l[94999];char d[99999];int w[99999],r[99999],s[99999];int abs(int x){ return x>0?x:-x;}int find(int x){ if(x==f[x])return x; int fx=find(f[x]); disx[x]+=disx[f[x]]; disy[x]+=disy[f[x]]; return f[x]=fx; }int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) f[i]=i; for(int i=1;i<=m;i++) { scanf("%d%d%d",&f1[i],&f2[i],&l[i]); cin>>d[i]; } int t; scanf("%d",&t); for(int i=1;i<=t;i++) { scanf("%d%d%d",&w[i],&r[i],&s[i]); } int j=1; for(int i=1;i<=m;i++) { int fx1=find(f1[i]); int fx2=find(f2[i]); if(fx1==fx2) continue; if(d[i]=='E') disx[f1[i]]=disx[f1[i]]-disx[f2[i]]+l[i],disy[f1[i]]=disy[f1[i]]-disy[f2[i]]; if(d[i]=='W') disx[f1[i]]=disx[f1[i]]-disx[f2[i]]-l[i],disy[f1[i]]=disy[f1[i]]-disy[f2[i]]; if(d[i]=='N') disy[f1[i]]=disy[f1[i]]-disy[f2[i]]+l[i],disx[f1[i]]=disx[f1[i]]-disx[f2[i]]; if(d[i]=='S') disy[f1[i]]=disy[f1[i]]-disy[f2[i]]-l[i],disx[f1[i]]=disx[f1[i]]-disx[f2[i]]; f[fx1]=fx2; if(s[j]==i){ fx1=find(w[j]); fx2=find(r[j]); if(fx1!=fx2) { j++; printf("-1\n"); continue; } printf("%d\n",abs(disx[w[j]]-disx[r[j]])+abs(disy[w[j]]-disy[r[j]])); j++; } }}
阅读全文
1 0
- 并查集专题
- 【并查集专题】
- 并查集专题
- 并查集专题学习
- 并查集专题【完结】
- 【并查集专题】【HDU】
- 并查集专题练习(一)POJ1611
- 数据结构专题小结:并查集
- 并查集专题-1001 Freckles
- 【各大OJ】并查集专题
- 并查集专题训练解题报告
- 并查集专题: HDU1232畅通工程
- 【并查集入门专题1】F
- 【并查集入门专题1】E
- 2014级寒假特训之并查集专题
- kuangbin带你飞 专题五 并查集
- [kuangbin带你飞]专题五 【并查集】 【--完结--】
- LeetCode Union-Find(并查集) 专题(一)
- Java类及其常用方法(六)BigDecimal
- BZOJ 1833 count 数字计数 (数位DP)
- SQLite学习手册(开篇)
- java后台删除html标签的方法
- 'gbk' codec can't decode byte 0x80 in position
- 并查集专题
- STM32F107——OTG模块之USB设备之虚拟串口移植(二)
- 剑指offer——7.斐波那契数列
- 自定义view圆并随手指移动
- 海外 | 恶意软件在Docker里作妖儿,本地化管理命令子集才是王道,你怎么看?
- a 标签和button按钮返回上个页面
- C# 根据Url获取页面所有内容
- 机器学习&数据挖掘笔记
- 通过AndroidManifest中的meta-data标签来设置log开关