当前位置: 首页>>代码示例>>C++>>正文


C++ DisjointSet::joined方法代码示例

本文整理汇总了C++中DisjointSet::joined方法的典型用法代码示例。如果您正苦于以下问题:C++ DisjointSet::joined方法的具体用法?C++ DisjointSet::joined怎么用?C++ DisjointSet::joined使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DisjointSet的用法示例。


在下文中一共展示了DisjointSet::joined方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main

int main(){

    DisjointSet graph;
    int t,a,b,n,k;
    char opc;

    scanf("%d",&t);

    for(int u=1;u<=t;u++){

        scanf("%d %d",&n,&k);

        graph.init(n);
        fill( pareja , pareja + n , -1 );

        for(int i=0;i<n;i++){
            scanf("%d",&a);
            if(a==0 || a-1==i) continue;
            a--;
            pareja[i] = a;
        }

        vector<pii> query;
        vector<pii> otro;

        while(k--){
            scanf("\n%c",&opc);

            if(opc=='C'){
                scanf("%d",&a);
                //printf("%c %d\n",opc,a);
                a--;
                b = pareja[a];
                if(b==-1) continue;
                pareja[a] = -1;
                query.push_back( pii( a , -1 ) );
                otro.push_back( pii( a , b ) );
            }
            else{
                scanf("%d %d",&a,&b);
                //printf("%c %d %d\n",opc,a,b);
                a--,b--;
                query.push_back( pii( a , b ) );
            }
        }

        for(int i=0;i<n;i++)
            if(pareja[i]!=-1)
                graph.join( i , pareja[i] );

        vector<string> res;
        int j = otro.size() - 1;

        for(int i=query.size()-1;i>=0;i--){
            if(query[i].second!=-1){
                if( graph.joined( query[i].second , query[i].first ) )
                    res.push_back("YES\n");
                else res.push_back("NO\n");
            }
            else{
                graph.join( otro[j].first , otro[j].second );
                j--;
            }
        }

        printf("Case #%d:\n",u);
        for(int i=res.size()-1;i>=0;i--)
            printf("%s",res[i].c_str());
    }
    return 0;
}
开发者ID:galloska,项目名称:Repositorio---Galloska,代码行数:71,代码来源:6910+-+Cutting+Tree.cpp


注:本文中的DisjointSet::joined方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。