• 最小生成树 prime算法 UVALive


    题目链接:https://vjudge.net/contest/241341#problem/D

    这里有多个发电站,需要求出所有点都和发电站直接或间接相连的最小代价,那么就是求出最小生成树的问题了,有点细微的不同是我们一开始要把所有的发电站看成起点(看成一个点),把其他点到发电站的最小代价求出,之后就是模板题了。

    代码:

    #include<iostream>
    #include<cstring>
    using namespace std;
    const int inf=0x3f3f3f;
    int map[300][300],vis[300],ss[300],dis[300];
    int n,m,k,t,ans;
    void prime()
    {
        for(int i=1;i<=k;i++)//多加了一层循环,遍历所有发电站 
        {
            for(int j=1;j<=n;j++)
            {
                dis[j]=min(dis[j],map[ss[i]][j]);
            }
        }
        for(int i=1;i<n;i++)
        {
            int min1=inf,u=0;
            for(int j=1;j<=n;j++)
            {
                if(!vis[j]&&dis[j]<min1)
                {
                    min1=dis[j];
                    u=j;
                }
             } 
             if(u==0)        //结束 
             return; 
             vis[u]=1;
             ans+=min1;
             for(int j=1;j<=n;j++)
             {
                 if(!vis[j]&&dis[j]>map[u][j])
                 {
                     dis[j]=map[u][j];
                  } 
             }
        }
    }
    int main()
    {
        cin>>t;
        int count1=0;
        while(t--)
        {
            cin>>n>>m>>k;
            memset(vis,0,sizeof(vis));
            int u,v,w;
            memset(dis,0x3f,sizeof(dis));
            memset(map,0x3f,sizeof(map));
            for(int i=1;i<=k;i++)     
            {
                cin>>ss[i];        //ss数组用来保存发电站 
                vis[ss[i]]=1;    //标记为已经走过 
                dis[ss[i]]=0;    //自己到自己为0 
            }
            for(int i=1;i<=m;i++)
            {
                cin>>u>>v>>w;
                if(map[u][v]>w)
                map[u][v]=map[v][u]=w;
            }
            ans=0;
            prime();
            cout<<"Case #"<<++count1<<": "<<ans<<endl;
        }
        return 0;
     } 
  • 相关阅读:
    JWT攻击
    CTF中的RSA 算法
    PHP反序列化字符逃逸
    记一次代码审计 [De1CTF 2019]SSRF Me
    BUU 思路记录(更新中
    日志注入漏洞
    docker 常用命令
    [HITCON 2017]SSRFme
    xss 19道题目
    BUUCTF之[EIS 2019]EzPOP&BUUCTF[2020 新春红包题]1 web
  • 原文地址:https://www.cnblogs.com/6262369sss/p/9384291.html
Copyright © 2020-2023  润新知