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

📄 maxst.h

📁 图论:最大支撑树算法实现 GraphM.h GraphOpr.h MaxST.cpp MaxST.dsp MaxST.dsw MaxST.h MaxST.ncb MaxST.opt
💻 H
字号:
#ifndef MAXST_H
#define MAXST_H

#include "GraphM.h"

void MaxST(Graph* G, int& s, Graph* max)
{
  int *V;
  V = new int(G->n());
  int *D;
  D = new int[G->n()];
  for (int i = 0; i < G->n(); i++)
  {
	D[i] = 0;
	V[i] = 0;
  }

  int d;

  G->setMark(s, VISITED);
  d = s;
  D[d] = 0;
  
  for (int j = 0; j < G->n(); j++)
	if (G->getMark(j) == UNVISITED && D[j] < G->weight(d, j))
	{
	  D[j] = G->weight(d, j);
	  V[j] = d;
	}

  int k;

  for (i = 1; i < G->n(); i++)
  {
    k = 0;
	for (j = 0; j < G->n(); j++)
	  if (D[k] < D[j])
		k = j;
	G->setMark(k, VISITED);
	max->setEdge(V[k], k, G->weight(V[k], k));
	d = k;
    D[d] = 0;
    for (j = 0; j < G->n(); j++)
      if (G->getMark(j) == UNVISITED && D[j] < G->weight(d, j))
	  {
	    D[j] = G->weight(d, j);
	    V[j] = d;
	  }
  }
  cout << max->e() << endl;
}

#endif

⌨️ 快捷键说明

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