5-10 公路村村通 (30分) prim Kruskal 算法

5-10 公路村村通 (30分) prim Kruskal 算法_第1张图片5-10 公路村村通 (30分) prim Kruskal 算法_第2张图片5-10 公路村村通 (30分) prim Kruskal 算法_第3张图片


Prime  难点 更新Lowcost 数组

#include
#include "string.h"
using  namespace std;
#define MAX 1005

int G[MAX][MAX];
int Top; 
int Prime()
{
    int sum=0,  count=0;
 
    int  Lowcost[MAX];
    
    memset(Lowcost,0,sizeof(Lowcost));
    int i,j;
    for(i=1;i<=Top;i++)
    {
		Lowcost[i]=G[1][i];
    }
    Lowcost[1]=-1;
	
	for(i=1;i> m >> n;//m=顶点的个数,n=边的个数
    if(m<=0)
    {
        cout<<"-1"<>x>>y>>w;
		G[x][y]=w;
		G[y][x]=w;
    }
    
	
    
    cout<

并查集    Krusual 算法

 #include "iostream"
#include "algorithm"
#include "string.h"
using  namespace std;

#define  Max 1005
int Father[Max];
struct Node
{
	int priority;
    int next;
	int weight;
}A[3005];
bool Com(Node X,Node Y)
{
    return X.weight>m>>n;  // Top, Edge	 
	 int i;
     for(i=1;i<=m;i++)
	 {
		 Father[i]=i;
	 }
	 for(i=1;i<=n;i++)
	 { 
		 cin>>A[i].priority>>A[i].next>>A[i].weight;
      
	 }	     
     sort(A,A+n,Com);
     int count=m;
     int sum=0; 
	 for(i=1;i<=n && count>1;i++)
	 {
          if(   Union(A[i].priority,A[i].next) )
		  {
            sum+=A[i].weight;
			count--;
		  }
	 }
     if(count==1)
     cout<




你可能感兴趣的:(5-10 公路村村通 (30分) prim Kruskal 算法)