zoukankan      html  css  js  c++  java
  • prim 模板

    #include<cstdio>
    #include<vector>
    #include<cstring>
    #include<set>
    #define maxn 5050
    #define fi first
    #define se second
    using namespace std;
    typedef pair<int,int> PII;
    vector <PII> s[maxn];
    int map[5001][5001];
    int low_cost[maxn],zou[maxn],n,m,x,y,val,zhong,mi,ans;
    int up(int x,int y,int val)
    {
        for(int i=0;i<s[x].size();i++)
        {
            if(s[x][i].fi==y )
            {
                if( s[x][i].se>val)
                {
                    s[x][i].se=val;
                }        
                return 1;
            }
        }
        return 0;
    }
    main(){
    //    freopen("data.in","r",stdin);
        scanf("%d%d",&n,&m);
        memset(low_cost,127/3,sizeof(low_cost));
    //    memset(map,127/3,sizeof(map));
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&x,&y,&val);
            if(x==y) continue;
    //        map[x][y]=min(map[x][y],val);
    //        map[y][x]=min(map[y][x],val);
            if(up(x,y,val))
                up(y,x,val);
            else
            {
                s[x].push_back(PII(y,val));
                s[y].push_back(PII(x,val));
            }
        }
        for(int i=0;i<s[1].size();i++)
        {
            low_cost[s[1][i].fi]=s[1][i].se;
        }
    /*    for(int i=2;i<=n;i++)
        {
            low_cost[i]=min(low_cost[i],map[1][i]);
        }*/
        zou[1]=1;
        zhong=1;
        for(int qwer=1;qwer<n;qwer++)
        {
            int f=0;
            mi=1000000000;
            for(int i=1;i<=n;i++)
            {
                if(low_cost[i]<mi && zou[i]==0)
                {
                    mi=low_cost[i];
                    zhong=i;
                    f=1;
                }
            }
            if(f==0)
            {
                printf("orz");
                return 0;
            }
            ans+=mi;
            zou[zhong]=1;
            for(int i=0;i<s[zhong].size();i++)
            {
                if(zou[s[zhong][i].fi]==1) continue;
                low_cost[s[zhong][i].fi]=min(low_cost[s[zhong][i].fi],s[zhong][i].se);
            }
            
    /*        for(int i=1;i<=n;i++)
            {
                if(map[zhong][i]<low_cost[i])
                    low_cost[i]=map[zhong][i];
            }*/
        }
        printf("%d",ans);
    }
  • 相关阅读:
    数独
    canvas生成图片并保存到本地文件夹主要代码
    2048未完成
    Page
    IDEA新建MAVEN项目时速度缓慢
    Bug 记录(持续更新。。。)
    RecyclerBaseAdapter 和 OnItemClickListener
    AutoLoadRecyclerView
    BaseActionBarActivity
    Volley + OkHttp3 + Gson 组合的简单网络请求封装
  • 原文地址:https://www.cnblogs.com/kczno1fans/p/7655002.html
Copyright © 2011-2022 走看看