去哪儿面试题- 一组描述由人组成的网络的测试用例校验是否联通

 

输入:

包含一组描述由人组成的网络的测试用例。测试用例的第一行是两个整数
P(2<= P <=50)和R(R>= 1),分别表示网络中包含的人数和网络中的关系数。接
下来输入R对关系,每对关系由两个字符串组成,表示网络中这对关系所关联
的两个人的名字。在本题中,名字是唯一的,且不包含空白字符。因为一个人
可能与多个人有关系,所以同一个名字可能在一个测试用例中出现若干次。

输出:
对于测试用例,输入测试用例的编号和最大隔离度。如果该网络是不联通的
则输出“DISCONNECTED"


样例输入:
4 4
ChuQiao YuwenYue YanXun YuanChun YanXun YuwenYue YuwenYue YuanChun

样例输出:

2

#coding:utf-8
P,R = 0,0
P, R = raw_input('').strip().split(' ')
P = int(P)
R = int(R)
while P<2 or P>50 or R < 1:
    print('2<=P<= 50, R>=1')
    P, R = raw_input('').strip().split('')
name_list = raw_input('').split(' ')
#num_list = [0,2,4,6...]
num_list = [x for x in range(len(name_list)) if x%2 == 0]
name_set_list = [] 
#重新定义一个name_set_list 格式为['name1name2','name2name1','name3name4','name4name3'....]
for i in num_list:
    name_set_list.append(name_list[i] + name_list[i+1])
    name_set_list.append(name_list[i+1] + name_list[i])
#set 去重,看有几个是重复的
name_set = set(name_set_list)
count = len(name_set_list) - len(name_set)
if count == 0:
    print 'DISCONNECTED'
else:
    print count
        

 

posted @ 2017-09-14 11:51  timtike  阅读(167)  评论(0编辑  收藏  举报