我正在尝试检查删除节点后Graph是否保持循环。在这种尝试中,我弹出一个键并检查是否删除该节点会删除所有循环。但是也许在第一次弹出之后,弹出的元素没有被插入
def detectCycle(v,visited,parent):
visited[v]=True
for i in Graph[v]:
if(visited[i]==False):
if(detectCycle(i,v)):
return True
elif parent!=i:
return True
return False
def iscyclic():
visited=[False for i in range(N+1)]
for i in Graph.keys():
if(visited[i]==False):
if(detectCycle(i,-1)==True):
return True
return False
Graph={1: [5,2],2: [5,1,3,4],3: [2],4: [2],5: [1,2]}
N=len(Graph.keys())
flag=0
for i in range(1,N+1):
x=Graph.pop(i)
if(iscyclic()):
pass
else:
flag=1
break
Graph[i]=x
if(flag==1):
print(i)
else:
print(-1)
我希望删除循环的节点正在删除,如果不存在则返回-1,但是我得到的是
Traceback (most recent call last):
for i in Graph[v]:
KeyError: 1