zoukankan      html  css  js  c++  java
  • 给任意多个链表然后要合并成一个

    #include<cstdio>
    #include<vector>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int N=110;
    int pre[N],nex[N];
    int z[N],y[N];
    int wan[N];
    int fa[N];
    int findx(int x)
    {
        return fa[x]=(x==fa[x]?x:findx(fa[x]));
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        int tot1=0,tot2=0,tot3=0;
        for(int i=0; i<=n; ++i) fa[i]=i;
        for(int  i=1; i<=n; ++i)
        {
            scanf("%d%d",&pre[i],&nex[i]);
            int x1=findx(i),x2=findx(pre[i]),x3=findx(nex[i]);
            if(x1!=x2&&x2!=0) fa[x2]=x1;
            if(x1!=x3&&x3!=0) fa[x3]=x1;
            if(pre[i]==0&&nex[i]==0)
            {
                wan[tot2++]=i;
                continue;
            }
            if(pre[i]==0) z[tot1++]=i;
            if(nex[i]==0) y[tot3++]=i;
        }
        bool used[120];
        memset(used,0,sizeof(used));
        for(int i=0; i<tot1-1; ++i)
        {
            int f1=findx(y[i]);
            for(int j=0; j<tot1; ++j)
            {
                int f2=findx(z[j]);
                if(f1!=f2&&!used[z[j]])
                {
                    used[z[j]]=1;
                    fa[f2]=f1;
                    pre[z[j]]=y[i];
                    nex[y[i]]=z[j];
                    break;
                }
            }
        }
        int last,qi;
        if(tot2==n) last=1,qi=1;
        else last=y[tot1-1],qi=0;
        for(; qi<tot2; ++qi)
        {
            nex[last]=wan[qi];
            pre[wan[qi]]=last;
            last=wan[qi];
        }
        for(int i=1; i<=n; ++i)
            printf("%d %d
    ",pre[i],nex[i]);
    }
    /*10
    0 9
    4 0
    5 0
    7 2
    0 3
    8 10
    0 4
    0 6
    1 0
    6 0*/
  • 相关阅读:
    ABP 往前端返回详细的错误信息
    ABP 报错1
    three.js 测试1
    three.js 添加 图形控制界面 gui
    three.js 设置透明度
    three.js 基础使用1
    three.js 添加环境光
    three.js 添加三维坐标系
    P2690 接苹果
    [USACO08FEB]修路Making the Grade
  • 原文地址:https://www.cnblogs.com/mfys/p/7553129.html
Copyright © 2011-2022 走看看