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>
转载于网络 侵权联系作者立即删除QAQ