题目链接:http://acm.swust.edu.cn/problem/772/

Time limit(ms): 1000        Memory limit(kb): 65535
  
Description

每个人都有朋友,朋友也有很多种,比如:

石友--情谊坚贞的朋友。

挚友--志同道合的朋友。

益友--于己有帮助的朋友。

网友--在互联网结识的朋友。

闺友--闺房中无话不谈的朋友。

君子交:指道义之交,即在道义上相互支持的朋友。

竹马之交:少年时骑竹马为戏的朋友,指自幼相交的朋友,等等。

现在dearway定义如果王二和张三是朋友,李四和张三也是朋友,那么王二和李四也是朋友,即朋友具有传递关系。现在给你N种朋友关系,问你有多种朋友集合,这些集合里不会出现两个朋友来自两个不同的集合。

Input

多组数据输入(小于等于10组)。每组数据第一行为一个整数N( 1 <= N <= 1000)表示N种朋友关系,接下来N行,每行首先输入一个整数ni( 1 <= ni <= 10)表示该种朋友关系中包含ni个人。然后ni个字符串,每个字符串由52个大小写英文字母及数字组成且长度小于10,表示ni个不同的人。

Output

每组数据输出一行,表示满足要求的答案。

Sample Input

 
4
2 Hilary Dearway
1 Hilary
2 Rusty Serena
2 Serena Luoxi
10
2 a b
2 b c
1 c
3 a d e
2 e f
2 f g
2 g h
2 h i
2 j k
1 z
Sample Output
2
3
 
 
解题思路:一个并查集问题,每输入一个集合,朋友集合种类+1,然后并查集合并,看是否能合并到一个集合(种类-1),由于字符串不太好操作
     利用map强大的字符处理能力,把字符串一一对应成数字进行操作,具体的看代码吧~~~
 
代码入下:
 #include<iostream>
#include<map>
#include<string>
using namespace std;
#define maxn 10001
map<string, int>mpt;
int father[maxn], ans, n, cnt, num;
void init(){
mpt.clear();
cnt = ans = ;
for (int i = ; i < maxn; i++)
father[i] = i;
}
int findset(int x){
return father[x] != x ? father[x] = findset(father[x]) : father[x];
}
void mergy(int a, int b){
int x = findset(a), y = findset(b);
if (x == y) return;
else{
father[x] = y;
ans--;
}
}
int main(){
string s;
while (cin >> n){
init();
for (int i = ; i <= n; i++){
int a, b;
cin >> num >> s;
if (!mpt[s]){
a = ++cnt;
mpt[s] = cnt;
ans++;
}
else a = mpt[s];
for (int j = ; j < num; j++){
cin >> s;
if (!mpt[s]){
b = ++cnt;
mpt[s] = cnt;
ans++;
mergy(a, b);
}
else{
b = mpt[s];
mergy(a, b);
}
}
}
cout << ans << endl;
}
return ;
}
 

[Swust OJ 772]--Friend(并查集+map的运用)的更多相关文章

  1. HDU 2419 Boring Game(并查集+map)

    感觉做得有点复杂了,但是AC了还是...爽... 题意:给你n个点每个点有一个价值,接下来有m条边,然后是q个操作,每个操作有三种情况: F X K:寻找与X点直接或间接相连的不小于价值K的最小价值, ...

  2. TOJ3955: NKU ACM足球赛(并查集+map+细节题)

    时间限制(普通/Java):5000MS/15000MS     内存限制:65536KByte 描述 NKU ACM最近要举行足球赛,作为此次赛事的负责人,Lee要对报名人员进行分队.分队要遵循如下 ...

  3. Atcoder 2159 連結 / Connectivity(并查集+map乱搞)

    問題文N 個の都市があり.K 本の道路と L 本の鉄道が都市の間に伸びています. i 番目の道路は pi 番目と qi 番目の都市を双方向に結び. i 番目の鉄道は ri 番目と si 番目の都市を双 ...

  4. 【日常学习】【并查集+map】codevs2639 约会计划题解

    然而我居然让诸城一中悲剧机房的C++可以编译了··· 直接上题目 题目描写叙述 Description cc是个超级帅哥,口才又好.rp极高(这句话似乎降rp),又非常的幽默,所以非常多mm都跟他关系 ...

  5. 九度OJ 朋友圈 -- 并查集

    题目地址:http://ac.jobdu.com/problem.php?pid=1526 题目描述: 假如已知有n个人和m对好友关系(存于数字r).如果两个人是直接或间接的好友(好友的好友的好友.. ...

  6. Virtual Friends(并查集+map)

    Virtual Friends Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  7. “美登杯”上海市高校大学生程序设计 C. 小花梨判连通 (并查集+map)

    Problem C C . 小 花梨 判连通 时间限制:2000ms 空间限制:512MB Description 小花梨给出

  8. [Swust OJ 1091]--土豪我们做朋友吧(并查集,最值维护)

    题目链接:http://acm.swust.edu.cn/problem/1091/ Time limit(ms): 1000 Memory limit(kb): 32768   人都有缺钱的时候,缺 ...

  9. [Swust OJ 856]--Huge Tree(并查集)

    题目链接:http://acm.swust.edu.cn/problem/856/ Time limit(ms): 1000 Memory limit(kb): 10000 Description T ...

随机推荐

  1. DatabaseMetaData的用法(转)

    http://blog.csdn.net/sdliubo/article/details/6546889

  2. VC++或QT下 高精度 多媒体定时器

    在VC编程中,用SetTimer可以定义一个定时器,到时间了,就响应OnTimer消息,但这种定时器精度太低了.如果需要精度更高一些的定时器(精 确到1ms),可以使用下面的高精度多媒体定时器进行代码 ...

  3. Module中引用Module中的Activity时报错了,错误是找不到R文件中的id引用

    1.好像库modul和主modul不能有相同名字和layout文件 2.资源文件名冲突导致的

  4. POJ 3450 Corporate Identity(KMP)

    [题目链接] http://poj.org/problem?id=3450 [题目大意] 求k个字符串的最长公共子串,如果有多个答案,则输出字典序最小的. [题解] 我们对第一个串的每一个后缀和其余所 ...

  5. HDU 3501 Calculation 2

    题目大意:求小于n的与n不互质的数的和. 题解:首先欧拉函数可以求出小于n的与n互质的数的个数,然后我们可以发现这样一个性质,当x与n互质时,n-x与n互质,那么所有小于n与n互质的数总是可以两两配对 ...

  6. SqlDataAdapter的方法之一Fill (DataSet dataset, String datatable)解释

    一.SqlDataAdapter的方法之一Fill (DataSet dataset, String datatable)解释:根据datatable名填充Dataset.myda.Fill(ds, ...

  7. Linux Shell 学习笔记 一 目录结构

    以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin       存放普通用户使用的命令 /sbin     存放管理员可以执行的命令 /home   ...

  8. 下 面 这 条 语 句 一 共 创 建 了 多 少 个 对 象 : String s="a"+"b"+"c"+"d";

    javac 编译可以对字符串常量直接相加的表达式进行优化, 不必要等到运行期去进行加法运算处理, 而是在编译时去掉其中的加号, 直接将其编译成一个这些常量相连的结果.题目中的第一行代码被编译器在编译时 ...

  9. CD key 生成

    题目描述如下: 某欧软件需要实现简易的CD-KEY算法,输入3个正整数,以空格隔开,根据者3个正整数生成的cd-key字符串.输出格式:xxxx-xxxx-xxxx-xxyy. 包含16个字符,以短划 ...

  10. dedecms(织梦)自定义表单后台显示不全 自定义模型当中添加自定义字段后在后台添加内容后不显示解决方案

    我们常用dedecms 自定义表单做留言功能.但是偶尔会遇到这样一个问题,就是 在前台提交表单后..后天显示不全.特别是中文字符  都不会显示, 比如下图: 这是因为  如果你织梦是gbk的话那就对了 ...