最小生成ツリー——Primアルゴリズム(C++)

3913 ワード

   :

#include
#include
int m,n,i[1001][1001],h[1001];
bool f[1001]={0};
long long ans(0);
int main()
{
    memset(h,0x3f,sizeof(h));  //      ,      ,           。
    h[1]=0;  //    1       。
    scanf("%d%d",&n,&m);
    for (int a=1;a<=m;a++)
    {
        int x,y,z;
scanf(
"%d%d%d",&x,&y,&z); i[x][y]=i[y][x]=z; // } for (int a=1;a<=n;a++) // {   int t(0);   for (int b=1;b<=n;b++)   if (!f[b]&&(h[b]<h[t]))   t=b;   f[t]=true;   for (int b=1;b<=n;b++)   if (!f[b]&&(h[b]>i[t][b]))   h[b]=i[t][b]; } // Dijkstra 。 for (int a=1;a<=n;a++) ans+=h[a]; // , 。 printf("%d",ans); return 0; }

転載先:https://www.cnblogs.com/koruko/p/5100226.html