给定一组class Riddle_Room(Room):
def activate(self):
global current_room
print "Riddle room query"
current_room = "riddle_room"
self.ip = raw_input("> ")
self.count = 3
print self.ip
while self.count > 0:
if "back" in self.ip:
rm.back()
elif "yes" in self.ip:
print "Riddle"
self.answer = raw_input("> ")
if self.answer == "answer":
print "You got that right!"
rm.enter()
else:
print "Try again!"
self.count -= 1
print "No choices left."
quit()
else:
print "Invalid command."
正整数,我们怎样才能在完整图中找到最大生成树,考虑边n
的权重?
我知道一个复杂度(i, j) = gcd(a[i], a[j])
的解决方案,但O(n^2)
,所以我需要更快的东西。
UPD:
如评论中所述:
这里的问题是获得一个利用特殊算法的算法 图的结构。
答案 0 :(得分:2)
根据其他约束,您可以使用Kruskal算法的变体。对于每个输入数,考虑它并将其与其除数相关联,例如,给定
[ 1, 2, 3, 4, 5, 8, 9, 10, 12]
我们制作地图
{ 1: [ 1, 2, 3, 4, 5, 8, 9, 10, 12],
2: [ 2, 4, 8, 10, 12],
3: [ 3, 9, 12],
4: [ 4, 8, 12],
5: [ 5, 10],
6: [12],
8: [ 8],
9: [ 9],
10: [10],
12: [12]}.
按降序顺序迭代此地图。对于每个列表,将这些不相交的集合联合起来。
答案 1 :(得分:0)
您可以执行以下操作:
最后一步非常棘手。一旦你知道树有(n-1)个边缘,你就不会总是需要运行所有的图形。