zoukankan      html  css  js  c++  java
  • LA 6437 Power Plant (prim最小生成树)

    还是裸的最小生成树

    #include<bits/stdc++.h>
    using namespace std;
    int T,N,M,P,K,a,b,c;
    int dist[1020],m[1020][1020];
    bool p[1020];
    void prim()
    {
        for(int i=1;i<=N;i++)
        {
            if(!p[i])
            {
                int Min=1000020;
                for(int j=1;j<=N;j++)
                {
                    if(p[j]&&m[i][j]!=0&&m[i][j]<Min)
                        Min=m[i][j];
                }
                dist[i]=Min;
            }
        }
        for(int i=1;i<=N-K;i++)
        {
            int Min=INT_MAX,k=0;
            for(int j=1;j<=N;j++)
            {
                if(!p[j]&&dist[j]<Min)
                {
                    Min=dist[j];
                    k=j;
                }
            }
            if(k==0)
                return;
            p[k]=true;
            for(int j=1;j<=N;j++)
            {
                if(!p[j]&&m[k][j]!=0&&dist[j]>m[k][j])
                    dist[j]=m[k][j];
            }
        }
    }
    int main()
    {
        scanf("%d",&T);
        for(int kase=1;kase<=T;kase++)
        {
            memset(p,false,sizeof(p));
            memset(m,0,sizeof(m));
            scanf("%d%d%d",&N,&M,&K);
            for(int i=1;i<=K;i++)
            {
                scanf("%d",&P);
                dist[P]=0;
                p[P]=true;
            }
            for(int i=1;i<=M;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                m[a][b]=c;
                m[b][a]=c;
            }
            prim();
            int ans=0;
            for(int i=1;i<=N;i++)
                ans+=dist[i];
            printf("Case #%d: %d
    ",kase,ans);
        }
        return 0;
    }


  • 相关阅读:
    验证foreach 能否操做更改原表
    asp.net post/get 公共方法
    C# json日期转换
    学数学
    2742: [HEOI2012]Akai的数学作业
    BZOJ2208
    树状数组求逆序对
    网络流复习计划
    SG函数学(hua)习(shui)记录
    SPLAY板子
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7045054.html
Copyright © 2011-2022 走看看