zoukankan      html  css  js  c++  java
  • PAT T1013 Image Segmentation

    krustral算法加并查集,按题给要求维护并查集~

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1014;
    const int inf=1e9;
    int N,M,x,y;
    int c,w;
    struct edge {
        int u;
        int v;
        int w;
    }Edge[maxn*4];
    int mst[maxn];
    int num[maxn];
    int father[maxn];
    bool cmp (edge a,edge b) {
        return a.w<b.w;
    }
    int findfather (int x) {
        int a=x;
        while (x!=father[x]) x=father[x];
        while (a!=father[a]) {
            int z=a;
            a=father[a];
            father[z]=x;
        }
        return x;
    }
    vector<int> g[maxn];
    int main () {
        scanf ("%d %d %d",&N,&M,&c);
        for (int i=0;i<N;i++) father[i]=i,num[i]=1;
        for (int i=0;i<M;i++) {
            scanf ("%d %d %d",&Edge[i].u,&Edge[i].v,&Edge[i].w);
        }
        sort (Edge,Edge+M,cmp);
        for (int i=0;i<M;i++) {
            int u=Edge[i].u;
            int v=Edge[i].v;
            int faU=findfather(u);
            int faV=findfather(v);
            if (faU==faV) continue;
            if ((Edge[i].w<=mst[faU]+c/num[faU])&&(Edge[i].w<=mst[faV]+c/num[faV])) {
                if (faU<faV) swap (faU,faV);
                father[faU]=faV;
                if (Edge[i].w>mst[faV]) mst[faV]=Edge[i].w;
                num[faV]+=num[faU];
            }
        }
        for (int i=0;i<N;i++)
        g[findfather(i)].push_back(i);
        for (int i=0;i<N;i++) {
            if (g[i].size()==0) continue;
            sort (g[i].begin(),g[i].end());
            for (int j=0;j<g[i].size();j++) {
                if (j!=0) printf (" ");
                printf ("%d",g[i][j]);
            }
            printf ("
    ");
        }
        return 0;
    }
  • 相关阅读:
    字符串的操作
    vue2.0状态
    vue2.0 Loding组件(收集转载)
    动态加载js文件,并在加载成功后执行回调函数
    Vue2.0 keep-alive 后组件不使用缓存
    前端必要知识汇总
    Vue2.0的群组路由
    video视频限时观看
    iOS军火库-好用的ActionSheetView
    我的网络层是这么设计的
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12302893.html
Copyright © 2011-2022 走看看