《并查集》hdu acm 5.1.7 c++ map的使用
2015-11-15 01:20
489 查看
#include<iostream> #include<stdio.h> #include<map> using namespace std; map<string,int> m; const int maxn=200005; int f[maxn],num[maxn],cnt; char name[maxn][15]; void init() { int i; for(i=1;i<maxn;i++) { f[i]=i; num[i]=1; } } int find(int x) { if(f[x]!=x) f[x]=find(f[x]); return f[x]; } void merge(int x,int y) { int fx,fy; fx=find(x); fy=find(y); if(fx!=fy) { f[fx]=fy; num[fy]+=num[fx]; printf("%d\n",num[fy]); } else { printf("%d\n",num[fy]); } } int main() { int t,n; char a[25],b[25]; while(scanf("%d",&t)!=EOF) { while(t--) { init(); scanf("%d",&n); m.clear(); cnt=1; while(n--) { scanf("%s%s",a,b); if(!m[a]) { m[a]=cnt++; } if(!m[b]) { m[b]=cnt++; } merge(m[a],m[b]); } } } return 0; }
相关文章推荐
- VIM的一些自己的使用tips(5年前整理的,看到后热泪盈眶)
- C++ 最常见的显示使用this 指针场景
- effective c++尽量少做转型动作(1)
- C++新手1024.cpp试制
- 软件工程(C编码实践篇)学习总结
- C语言
- 关键字static在c与c++中的区别。
- c语言的数组
- 《more effective c++》条款26 限制类对象的个数
- static_assert 是在编译时期的断言
- C/C++全局,静态变量小结
- Visual C++ Tips: 创建 SQLite 静态库
- C++ Polymorphism practice
- C-函数杂谈
- C-复杂的声明的阅读
- C-指针数组与数组指针
- C- 函数与指针
- C-字符串
- c++ 枚举的定义、设置值、取值范围
- C++实现单链表