⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prim.cpp

📁 用C++实现的最小生成树的算法
💻 CPP
字号:
//Prim 算法
//注释见书

void Prim(Graph& G, int s) {
	int *D, *V;
	D = new int [G.n()];
	V = new int [G.n()];
	for (int i=0; i<G.n(); i++)    
		D[i] = INFINITY;
	D[s] = 0;
	for (i=0; i<G.n(); i++) {       
		int v = minVertex(G, D);
		G.Mark[v] = VISITED;
		if (v != s) AddEdgetoMST(V[v], v); 
		if (D[v] == INFINITY) return; 
		for (Edge w = G.first(v); G.isEdge(w); w = G.next(w))
			if (D[G.v2(w)] > G.weight(w)) {
				D[G.v2(w)] = G.weight(w);    
				V[G.v2(w)] = v;   
			}
	}
}

int minVertex(Graph& G, int* D) {
	int v;
	for (int i=0; i<G.n(); i++)
		if (G.Mark[i] == UNVISITED) { 
			v = i;
			break; 
		}
		for (i=0; i<G.n(); i++)
			if ((G.Mark[i] == UNVISITED) && (D[i] < D[v]))
				v = i;
			return v;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -