
我编写了以下python程序来执行给定图形的DFS,但在执行后它给出了错误:键错误7.我的代码有什么问题?
output=[]
graph = {
9:[8,7,6],
8:[5,4],
6:[3,2],
5:[1,0]
}
def dfs(graph,root):
stack=[]
visited=set()
stack.append(root)
output.append(str(root))
visited.add(root)
while not(stack==[]):
for item in graph[root]:
if item not in visited:
stack.append(item)
visited.add(item)
output.append(str(item))
if set(graph[item]).union(visited)==visited:
stack.pop(-1)
root=stack[len(stack)-1]
continue
root=item
dfs(graph,9)
print(" ".join(output))
Run Code Online (Sandbox Code Playgroud)
在添加@amit给出的建议后,问题仍然没有解决,我已经编写了以下代码并且输出的输出不正确,请帮忙!
output=[]
graph = {
1:[2,3],
2:[4,5],
3:[6,7],
4:[],
5:[],
6:[],
7:[]
}
def dfs(graph,root):
stack=[]
visited=set()
stack.append(root)
output.append(str(root))
visited.add(root)
while not(stack==[]):
for item in graph[root]:
if item not in visited:
stack.append(item)
visited.add(item)
output.append(str(item))
if set(graph[item]).union(visited)==visited: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用STL在C++中实现Prim的MST算法.
但是对于下面的程序,它似乎进入了一个无限循环.然后退出并出错.
Prim的MST算法的伪代码;

我的代码:
#include<algorithm>
#include<vector>
#include<iostream>
#include<queue>
using namespace std;
typedef vector<int> vi;
typedef pair<int,int> ii;
typedef vector<ii> vii;
#define REP(i,a,b) for(int i=int(a);i<b;i++)
#define TRvii(c,it) for(vii::iterator it=(c).begin();it!=(c).end();it++)
#define INF 2000000000
void Prims(int V, int s, vector<vii> &AdjList)
{
vector<int> dist(V,INF);
dist[s] = 0;
priority_queue<ii,vector<ii>,greater<ii> > pq;
pq.push(ii(0,s));
REP(i,1,V) pq.push(ii(i,INF));
bool inPriorityQueue[V];
REP(i,0,V) inPriorityQueue[i] = true;
while(!pq.empty())
{
ii top = pq.top(); pq.pop();
int d = top.first,u = top.second;
inPriorityQueue[u] = false;
TRvii(AdjList[u],it)
{
int v = it->first, weight_u_v = …Run Code Online (Sandbox Code Playgroud)