【HDU - 3172】Virtual Friends(带权并查集--权为集合元素个数)

题干:

These days, you can do all sorts of things online. For example, you can use various websites to make virtual friends. For some people, growing their social network (their friends, their friends' friends, their friends' friends' friends, and so on), has become an addictive hobby. Just as some people collect stamps, other people collect virtual friends. 

Your task is to observe the interactions on such a website and keep track of the size of each person's network. 

Assume that every friendship is mutual. If Fred is Barney's friend, then Barney is also Fred's friend.

Input

Input file contains multiple test cases. 
The first line of each case indicates the number of test friendship nest. 
each friendship nest begins with a line containing an integer F, the number of friendships formed in this frindship nest, which is no more than 100 000. Each of the following F lines contains the names of two people who have just become friends, separated by a space. A name is a string of 1 to 20 letters (uppercase or lowercase).

Output

Whenever a friendship is formed, print a line containing one integer, the number of people in the social network of the two people who have just become friends.

Sample Input

1
3
Fred Barney
Barney Betty
Betty Wilma

Sample Output

2
3
4

题目大意:

有多个测试组T,每个测试组第一行n,接下来n行表示甲与乙认识,每给出一个关系,求出一共有多少个朋友。朋友的朋友也是朋友。

解题报告 :

先用map映射一下每个字符串对应一个序号(因为不然的话不好放到f数组num数组 的下标上)然后查询祖先节点那个集合的元素个数。

AC代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<string>using namespace std;
int n,m;
char s1[50],s2[50];
int f[200000 + 5];
int num[200000 + 5];
map<string , int> mp;int getf(int v) {return v==f[v]?v:f[v]=getf(f[v]);
}
void merge(int u,int v) {int t1=getf(u);int t2=getf(v);if(t1!=t2) {f[t2]=t1;num[t1]+=num[t2];//别写成t2了。。。。 }
}
void init() {for(int i = 1; i<=200000 + 5; i++) {f[i]=i;num[i]=1;}
}
int main()
{int top;while(~scanf("%d",&n) ) {while(n--) {mp.clear();top = 0;init();scanf("%d",&m);while(m--) {scanf("%s",s1);scanf("%s",s2);if(mp.find(s1) == mp.end() ) mp[s1] = ++top;if(mp.find(s2) == mp.end() ) mp[s2] = ++top;merge(mp[s1],mp[s2]);printf("%d\n",num[ getf( mp[s1] ) ] );}//一共top个人 }}return 0 ;
}

总结:

   无。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java null转换jason_常见java问题及解决办法汇总(干货可收藏)

Java Exception&#xff1a;1、Error2、Runtime Exception 运行时异常3、Exception4、throw 用户自定义异常异常类分两大类型&#xff1a;Error类代表了编译和系统的错误&#xff0c;不允许捕获&#xff1b;Exception类代表了标准Java库方法所激发的异常。Exception类还包含运行…

asp.net 网站开发,word导出

曾经有一个word导出案例&#xff1a; web保存word资源 后来发现可以使用MVC的File方法保存成相应的文件&#xff0c;特别做个记录。 1 前端 //网页 <form method"post" action"/Home/WordExport" id"wordTmp"><input type"text&…

【HDU - 3038】How Many Answers Are Wrong (带权并查集--权为区间和)

题干&#xff1a;&#xff08;&#xff09; TT and FF are ... friends. Uh... very very good friends -________-b FF is a bad boy, he is always wooing TT to play the following game with him. This is a very humdrum game. To begin with, TT should write down a s…

drop sqlite 多个表_SQLite简介与安装

SQLite简介&#xff1a;SQLite是一款轻型的数据库&#xff0c;是遵守ACID的关系型数据库管理系统&#xff0c;它包含在一个相对小的C库中&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。就像其他数据库&#xff0c;SQLite 引擎不是一个独立的进…

【CF566#D】 Restructuring Company (并查集---合并区间操作)

题干&#xff1a; Even the most successful company can go through a crisis period when you have to make a hard decision — to restructure, discard and merge departments, fire employees and do other unpleasant stuff. Lets consider the following model of a c…

dg oracle 切换模式_谈谈dg切换涉及的概念:switchover和failover区别

概述今天有朋友问了一个问题&#xff1a;switchover和failover之间的区别&#xff0c;有点懵逼&#xff0c;居然把这忘记了&#xff0c;这里总结下两者之间的一些区别。DG架构DG切换时注意点&#xff1a;1、确认主库和从库间网络连接通畅&#xff1b;2、确认没有活动的会话连接…

【POJ - 2823】 Sliding Window(单调队列 用双端队列实现或模拟队列)

题干&#xff1a; An array of size n ≤ 10 6 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves rightwards…

gis影像格式img转为ecw_医学影像图片格式

&#xff08;1&#xff09;Analyze格式&#xff1a;Analyze格式储存的每组数据组包含2个文件&#xff0c;一个为数据文件&#xff0c;其扩展名为.img&#xff0c;包含二进制的图像资料&#xff1b;另外一个为头文件&#xff0c;扩展名为.hdr&#xff0c;包含图像的元数据。&…

【CF#468 div2 D. 】Peculiar apple-tree(思维)

题干&#xff1a; In Arcadys garden there grows a peculiar apple-tree that fruits one time per year. Its peculiarity can be explained in following way: there are n inflorescences, numbered from 1 to n. Inflorescence number 1 is situated near base of tree a…

case when then else多个条件_sqlserver条件分支case when使用教程

在sqlserver的条件分支case when有两种写法&#xff1a;1)case 字段 when 值 then 返回值 when 值2 then 返回值2 end2)case when 条件1 then 返回值1 when 条件2 then 返回值2 end方法步骤&#xff1a;1.打开“SQL Server Management Studio”管理工具&#xff0c;创建一张测试…

【CF#-931A】 Friends Meeting(思维)

题干&#xff1a; Two friends are on the coordinate axis Ox in points with integer coordinates. One of them is in the point x1  a, another one is in the point x2  b. Each of the friends can move by one along the line in any direction unlimited number …

hashmap value占用空间大小_【Java集合框架002】原理层面:HashMap全解析

一、前言二、HashMap2.1 HashMap数据结构 HashMap线程不安全 哈希冲突2.1.1 HashMap数据结构学习的时候&#xff0c;先整体后细节&#xff0c;HashMap整体结构是 底层数组链表 &#xff0c;先记住&#xff0c;再开始看下面的HashMap相关知识点&#xff1a;底层数据结构&#…

【CF#931.B】World Cup (思维,模拟)

题干&#xff1a; The last stage of Football World Cup is played using the play-off system. There are n teams left in this stage, they are enumerated from 1 to n. Several rounds are held, in each round the remaining teams are sorted in the order of their …

升级bios_华硕B350PLUS升级BIOS更换AMD 3900X步骤

首先CPU更换看下面这张图&#xff0c;注意CPU上的小三角的位置。这块主板如果BIOS没有升级直接更换AMD 3900X的CPU会有点不亮显示器的问题&#xff0c;所以下面讲下华硕B350PLUS这块主板是如何更新到最新的BIOS驱动的(需要在原来老的CPU基础上先升级&#xff0c;升级完再更换39…

【HDU - 3410 】 Passing the Message(单调栈)

题干&#xff1a; What a sunny day! Let’s go picnic and have barbecue! Today, all kids in “Sun Flower” kindergarten are prepared to have an excursion. Before kicking off, teacher Liu tells them to stand in a row. Teacher Liu has an important message to …

实体类 接口_spring-boot-route(五)整合Swagger生成接口文档

目前&#xff0c;大多数公司都采用了前后端分离的开发模式&#xff0c;为了解决前后端人员的沟通问题&#xff0c;后端人员在开发接口的时候会选择使用swagger2来生成对应的接口文档&#xff0c;swagger2提供了强大的页面调试功能&#xff0c;这样可以有效解决前后端人员沟通难…

【qduoj - 312】寻找唯一的萌妹(卡时)

题干&#xff1a; 寻找唯一的萌妹 Description 又到了一年一度ACMer暑期留校集训的日子了&#xff0c;目前一共有2n1个小萌新报名参加暑期集训&#xff0c;其中2n个是帅哥&#xff0c;只有1个萌妹子&#xff0c;这是多么的悲催&#xff01;由于暑期训练强度大&#xff0c;坚持…

python 遍历字典嵌套_Python 字典嵌套循环遍历

这是从接口获取到的json数据{* "code":"10000",* "charge":false,* "remain":0,* "msg":"查询成功",* "result":{* "status":0,* "msg":"ok",* "result":{* &…

ACMer的AC福音!手动扩栈外挂!(防止栈溢出)

还在因为 怕 g 提交时间很慢&#xff0c;但是用C 交又怕栈溢出&#xff1f;&#xff1f;&#xff1f; 我们都知道&#xff0c;如果代码里有 递归函数 频繁调用&#xff0c; 用 C 提交代码&#xff0c; 很可能就会 出现 Runtime Error (ACCESS_VIOLATION) 但是用G…

【HDU - 1452】 Happy 2004(因子和,逆元,快速幂)

题干&#xff1a; Happy 2004 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1863 Accepted Submission(s): 1361 Problem Description Consider a positive integer X,and let S be the sum of all pos…