hdu 3172 Virtual Friends
2015-01-02 10:47
309 查看
acm.hdu.edu.cn/showproblem.php?pid=3172
萌萌哒并查集水题!唯一需要注意一点点的是使用map容器为名字赋予一个编号便于操作!
AC代码:
萌萌哒并查集水题!唯一需要注意一点点的是使用map容器为名字赋予一个编号便于操作!
AC代码:
#include <algorithm> #include <iostream> #include <string.h> #include <stdio.h> #include <map> using namespace std; map <string, int> mm; const int MAX = 100010; char s1[MAX][25],s2[MAX][25]; int father[MAX],rank[MAX]; void Init(int n){ for(int i=1; i<=n; i++){ father[i] = i; rank[i] = 1; } } int Find(int x){ if(x != father[x]) father[x] = Find(father[x]); return father[x]; } void Union(int x, int y){ int xx = Find(x), yy = Find(y); if(xx != yy){ father[yy] = xx; rank[xx] += rank[yy]; // cout << x << ' ' << rank[x] << endl; } } int main(){ int cas; while(scanf("%d",&cas) != EOF){ while(cas--){ int n,pos = 0; scanf("%d",&n); mm.clear(); for(int i=0; i<n; i++){ scanf("%s%s",s1[i],s2[i]); if(mm.find(s1[i]) == mm.end()) mm[s1[i]] = ++pos; if(mm.find(s2[i]) == mm.end()) mm[s2[i]] = ++pos; } Init(pos); for(int i=0; i<n; i++){ // cout << mm[s1[i]] << " " << mm[s2[i]] << endl; Union(mm[s1[i]], mm[s2[i]]); printf("%d\n",rank[Find(mm[s1[i]])]); } } } return 0; }
相关文章推荐
- hdu 3172 Virtual Friends
- 并查集 HDU 3172 Virtual Friends
- hdu 3172 Virtual Friends 【并查集+map】
- hdu 3172 Virtual Friends(并查集)University of Waterloo Local Contest 2008.09
- HDU 3172 Virtual Friends (并查集节点统计)
- HDU 3172 Virtual Friends (并查集)
- HDU 3172 Virtual Friends 并与正确集中检查 -秩
- hdu 3172 Virtual Friends
- HDU 3172 Virtual Friends(带权并查集,map)
- HDU 3172 Virtual Friends 并查集+字典树
- hdu 3172 Virtual Friends
- HDU 3172 - Virtual Friends(map+并查集)
- 文章标题 HDU 3172 : Virtual Friends (并查集+map)
- hdu 3172 Virtual Friends(简单并查集)
- HDU 并查集 - 3172 Virtual Friends
- hdu 3172 Virtual Friends
- hdu 3172 Virtual Friends
- hdu 3172 Virtual Friends(加权并查集)
- HDU 3172 Virtual Friends (并查集)
- hdu 3172 Virtual Friends