hdu6109 数据分割【并查集+set】
来源:互联网 发布:三国立志传2经验算法 编辑:程序博客网 时间:2024/05/16 16:55
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6109
题意:中文题
解析:由于相等具有传递性,那么可以选择用并查集来维护,即若干个相等的就是一堆,那么对于不等号来说,是无法传递的,于是可以选择用set来维护,比如对于x这个集合来说,里面的所有元素都是与x不等的。这些是对于数据结构的选择,那么有一些要注意的点就是,当你两个相等的元素合并时,其不等的元素也要往父节点合并,不如,x1=y1,x1≠x2,y1≠y2,那么也就有x1≠y2,y1≠x2
主要就是这些,接着边输入边处理即可
#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+100;int fa[maxn];set<int>s[maxn];vector<int>ans;void init(int n){ for(int i=0;i<=n;i++) { fa[i] = i; s[i].clear(); }}void push_up(int x,int fa){ set<int>::iterator it = s[x].begin(); for(;it!=s[x].end();it++) s[fa].insert(*it);}int getfa(int x){ if(x==fa[x]) return fa[x]; push_up(x,fa[x]); return fa[x] = getfa(fa[x]);}void merge(int u,int v){ int t1 = getfa(u); int t2 = getfa(v); if(t1!=t2) fa[t1] = t2;}int main(void){ int n; scanf("%d",&n); init(n); int cnt = 0; for(int i=0;i<n;i++) { int x,y,e; scanf("%d %d %d",&x,&y,&e); cnt++; x = getfa(x); y = getfa(y); if(e) { if(x==y) continue; if(s[x].find(y)!=s[x].end() || s[y].find(x)!=s[y].end()) { ans.push_back(cnt); cnt = 0; init(n); } else merge(x,y); } else { if(x==y) { ans.push_back(cnt); cnt = 0; init(n); } else { s[x].insert(y); s[y].insert(x); } } } printf("%d\n",ans.size()); for(int i=0;i<(int)ans.size();i++) printf("%d\n",ans[i]); return 0;}
阅读全文
0 0
- hdu6109 数据分割【并查集+set】
- hdu6109数据分割(并查集+set)
- HDU6109 数据分割 【并查集+启发式】
- HDU6109-数据分割
- hdu6109(并查集+启发式合并)
- hdu 6109 数据分割(并查集+set合并)
- hdu 6109 数据分割(并查集+set合并)
- 2017百度之星初赛:A-1002. 数据分割(并查集+set)
- HDU 6109 百度之星2017 1002 数据分割(并查集+set)
- HDU 6109 数据分割 【并查集+set】 (2017"百度之星"程序设计大赛
- 【百度之星初赛A】1002 数据分割(并查集+Set)
- HDU 6109 数据分割(并查集+set+在线倍增法)
- hdu 6109 数据分割(并查集,倍增)
- HDU 6109 数据分割(并查集+缩点)
- 【并查集】集合 set
- zoj3261(并查集+set)
- Disjoint-Set并查集
- hdu 6109 数据分割(并查集合并)
- 纯css实现自适应正方形
- Redis sentinel 哨兵模式
- AI 、透明式沉浸体验、数字平台是三大趋势
- FreeMarker入门笔记二之取pojo属性
- use ida6.8 + windbg on win10
- hdu6109 数据分割【并查集+set】
- Unity9--公转、自转程序
- Ext JS 混合元素(Composite Elements )
- 【description】方法
- java基础之File类
- MySQL的事务处理及隔离级别
- 近期學習目標和學習順序(python)
- 关于云计算的几个个问答
- Android MVVM 初探之 DataBinding 双向绑定