【发布时间】:2013-03-11 05:39:10
【问题描述】:
在任何一群人中,都有很多对朋友。假设分享朋友的两个人本身就是朋友。 (是的,这在现实生活中是一个不切实际的假设,但让我们仍然这样做)。换句话说,如果 A 和 B 是朋友,B 和 C 是朋友,那么 A 和 C 也一定是朋友。使用这个规则,我们可以将任何一组人划分为朋友圈,只要我们对组中的友谊有所了解。
编写一个接受两个参数的函数networks()。第一个参数是组中的人数,第二个参数是定义朋友的元组对象列表。假设人们由数字 0 到 n-1 标识。例如,元组 (0, 2) 表示人 0 是人 2 的朋友。该函数应打印将人划分为朋友圈的情况。下面显示了该函数的几个示例运行:
>>>networks(5,[(0,1),(1,2),(3,4)])#execute
社交网络 0 是 {0,1,2}
社交网络 1 是 {3,4}
老实说,我对如何启动这个程序很迷茫,任何提示都将不胜感激。
【问题讨论】:
-
你想找到图中的连通分量,可以使用union find算法快速找到。
标签: python python-3.x social-networking dictionary