Prim算法-最小生成数

Prim算法-最小生成数

prim算法

和Dijkstra算法相似。大家可以在专栏里翻一翻,找到Dijkstra算法对比一下。最小生成数(Prim)代码如下:

#include <iostream>
using namespace std;
const int M=0x3f3f3f3f;
int n; 
int m;
int p1,p2,l;
int map[100][100];
int dis[1000];
int book[1000]={<!-- -->0};
int mi;
int u;
int sum=0;
int main()
{<!-- -->
 cin>>n>>m;
 for (int i=1;i<=n;i++)
 {<!-- -->
  for (int j=1;j<=n;j++)
  {<!-- -->
   if (i==j)
   {<!-- -->
    map[i][j]=0;
   }
   else
   {<!-- -->
    map[i][j]=M;
   }
  }
 }
 for (int i=1;i<=m;i++)
 {<!-- -->
  cin>>p1>>p2>>l;
  map[p1][p2]=l; 
  map[p2][p1]=l;
 }
 book[1]=1;
 for (int i=1;i<=n;i++)
 {<!-- -->
  dis[i]=map[1][i];
 }
 for(int i=1;i<=n-1;i++)
 {<!-- -->
  mi=M;
  for (int j=1;j<=n;j++)
  {<!-- -->
   if (dis[j]<mi&&book[j]==0)
   {<!-- -->
    mi=dis[j];
    u=j;
   }
  }
  book[u]=1;
  sum=sum+dis[u];
  for (int j=1;j<=n;j++)
  {<!-- -->
   if (book[j]==0&&dis[j]>map[u][j])
   {<!-- -->
    dis[j]=map[u][j];
   }
  }
 }                           
 cout<<sum<<endl;
 return 0;
}

看完了,点个赞再走呗~~~o( ̄▽ ̄)ブ</em>

posted @ 2021-01-12 16:31  刘桓湚  阅读(174)  评论(0编辑  收藏  举报