题目描述
幼儿园老师安排小朋友做游戏,现在需要给N个小朋友进行分组,老师让每个同学写一个名字,代表这位小朋友想和谁分到一组,请问老师在满足所有小朋友意愿的情况下,最多可以将班级分成多少组?
输入描述:
第一行输入N,0<N<100000
接下来是N行代表每个小朋友希望和谁分到一组,如“John Jack”,代表John希望和Jack分到一组,两个名字之间以空格分隔,名字本身不存在空格。
输出描述:
分组的最多数量
示例1
输入
6
Jack Tom
Alice John
Jessica Leonie
Tom Alice
John Jack
Leonie Jessica
输出
2
示例2
输入
3
Xiaoming Xiaohong
Xiaohong Xiaoqiang
Xiaoqiang Xiaoming
输出
1
代码思路
采用两个hashmap存储,一个存储小朋友key要与小朋友val的组队情况,一个存储小朋友是否被组队。
data_map = {
'a' :'b',
'b' :'a',
'c' :'a'}
visit_map = {
'a' :False,
'b' :False,
'c' :False }
Python 代码
class Solution0407_hw_01(object):
def __init__(self):
super(Solution0407_hw_01, self).__init__()
self.data_map = {
}
self.visit_map = {
}
def input_data(self, Debug=False):
if Debug:
self.data_map = {
'Jack' :'Tom',
'Alice' :'John',
'Jessica' :'Leonie',
'Tom' : 'Alice',
'John' :'Jack',
'Leonie' :'Jessica'}
self.visit_map = {
'Jack' :False,
'Alice' :False,
'Jessica' :False,
'Tom' :False,
'John' :False,
'Leonie' :False }
else:
nums = input("input n = ")
for i in range(int(nums)