zoukankan      html  css  js  c++  java
  • P1340 兽径管理

    传送门

    思路:

      题目要求每次连边都要输出最小生成树的边权和。如果在线直接套用最小生成树模板肯定会超时,考虑离线处理。记录每一插入边的时间,在所有边都插入完成后排序一遍就可以求最小生成树(按照插入时间的前后对边进行取舍)。

    标程:

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<cstdlib>
    #include<string>
    #include<vector>
    #include<stack>
    #include<deque>
    #include<queue>
    #include<map>
    #include<set>
    using namespace std;
    #define max(a,b) ((a)>(b)?(a):(b))
    #define min(a,b) ((a)<(b)?(a):(b))
    #define maxn 6001
    typedef long long LL;
    LL n,w,cnt,ans;
    LL fa[maxn];
    struct hh
    {
        LL l,r,w,tim;
    }t[maxn];
    inline LL read()
    {
        LL xs=0,kr=1;char ls;
        ls=getchar();
        while(!isdigit(ls))
        {
            if(!(ls^45))
                kr=-1;
            ls=getchar();
        }
        while(isdigit(ls))
        {
            xs=(xs<<1)+(xs<<3)+(ls^48);
            ls=getchar();
        }
        return xs*kr;
    }
    inline bool cmp(const hh&l,const hh&r)
    {
        return l.w<r.w;
    }
    inline LL find(LL u)
    {
        if(u!=fa[u]) fa[u]=find(fa[u]);
        return fa[u];
    }
    inline void kruskal(LL num)
    {
        for(LL i=1;i<=w;i++) fa[i]=i;
        for(LL i=1;i<=w;i++)
        {
            if(t[i].tim>num) continue;
            LL r1=find(t[i].l),r2=find(t[i].r);
            if(r1!=r2)
            {
                fa[r1]=r2;
                ans+=t[i].w;
                cnt++;
            }
            if(cnt==n-1) {printf("%lld
    ",ans);return;}
        }
        printf("-1
    ");
    }
    int main()
    {
        n=read();w=read();
        for(LL i=1;i<=w;i++)
        {
            t[i].l=read();t[i].r=read();t[i].w=read();t[i].tim=i;
        }
        sort(t+1,t+w+1,cmp);
        for(LL i=1;i<=w;i++)
        {
            ans=0,cnt=0;
            kruskal(i);
        }
    return 0;
    }
  • 相关阅读:
    流方式下载文件
    数据导出excel
    文件属性的生成操作build action
    数据库添加注释
    前后端交互
    ASP.NET Core 3.0 原生DI拓展实现IocManager
    ASP.NET Core使用Elasticsearch记录NLog日志
    IdentityServer4中文文档
    Elasticsearch、Kibana Windows下环境搭建
    通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传
  • 原文地址:https://www.cnblogs.com/lck-lck/p/9777330.html
Copyright © 2011-2022 走看看