LA 3644(p191)----X-Plosives
2016-03-02 17:16
211 查看
#include<bits/stdc++.h> #define debu using namespace std; const int maxn=1e5+50; int ans; int fa[maxn],Rank[maxn]; int Find(int root) { int k,j,x; x=root; while(x!=fa[x]) x=fa[x]; k=root; while(k!=x) { j=fa[k]; fa[k]=x; k=j; } return x; } void Union(int x,int y) { if(Rank[x]<Rank[y]) fa[x]=y; else { fa[y]=x; if(Rank[x]==Rank[y]) Rank[x]++; } } void init() { ans=0; memset(Rank,0,sizeof(Rank)); for(int i=0; i<=1e5; i++) fa[i]=i; } int main() { #ifdef debug freopen("in.in","r",stdin); #endif // debug int x,y; init(); while(scanf("%d",&x)!=EOF) { if(x==-1) { printf("%d\n",ans); init(); } else { scanf("%d",&y); int f1=Find(x),f2=Find(y); //cout<<f1<<" "<<f2<<endl; if(f1!=f2) Union(f1,f2); else ans++; } } return 0; }
题目地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1645
题解:并查集,依次合并,当出现环时的元素与前面元素组成爆炸物(x条边,x个元素),依次统计即可。
相关文章推荐
- SQL 合并数据
- 移动端 像素渲染流水线与GPU Hack
- javascript高级程序设计笔记-第七章(函数表达式)
- 简单的记事本功能实现代码--(流读取器)
- 文本框只允许输入数字.net/javascript
- 老李分享:loadrunne动态查询db2数据库
- 老李分享:loadrunner操作mysql数据库
- ViewData与ViewBag的使用
- 在android studio中使用greenDao
- UISearchBar改变输入框的背景颜色
- Jmeter中正则表达式提取器使用详解
- redis数据优化
- mbed OS - ARM关于物联网(IoT)的战略布局
- 类似于填空的自动换行css样式实现
- 1-1 Windows应用程序的特点
- 老李分享:Python开发性能测试脚本
- SparkR principle | R spark 集成原理
- 值得收藏的文章(杂七杂八)(二)
- javaWeb 实现文件下载的功能
- Android 5.0 Camera (2): 初始化