并查集图冲突hdu1272

还是属于并查集的变形

两个点只有一条路径连通

给出的两个点事先都是属于两个集合的

需要给出的着条边构成一个集合

算法复杂度还是挺高的

每个我都循环了100000次

set2数组没清空 wrong了一次

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int sett[100000 + 100];
int set2[100000 + 100];
int find2(int x)
{
    while(x!=sett[x]) x=sett[x];
    return x;
}
int merge2(int fx,int fy)
{
    if(fx == fy) return 1;
    else if(fx > fy) sett[fx]=fy;
    else sett[fy] = fx;
    return 0;
}
int main()
{
    for(int i=1;i<=100000;i++) sett[i]=i;
    int x,y;
    int flag=1;
    while(scanf("%d%d",&x,&y)&&x!=-1&&y!=-1)
    {
        if(x==0&&y==0){
            int countt=0;
            for(int i=1;i<=100000;i++) if(sett[i]==i&&set2[i]) countt++;
            if(countt >= 2) flag=0;
//            printf("countt %d\n",countt);
            if(flag) printf("Yes\n");
            else printf("No\n");
            flag = 1;
            for(int i=1;i<=100000;i++) sett[i]=i;
            memset(set2,0,sizeof(set2));
        }
        else {
            set2[x]=1,set2[y]=1;
            int fx = find2(x);
            int fy = find2(y);
            if( merge2(fx,fy) ) { flag=0;  }
        }
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-09 21:58:45

并查集图冲突hdu1272的相关文章

hdu--1272--并查集||图的特点

其实 觉得 这个标题 起得不太恰当... 但我又想 并查集 的操作 是形成一颗树的结构 这题的话 是基于图来考虑比较好 因为 是中文 很容易理解题意 而且我一般也不喜欢讲题意 就想随便讲下应该注意和考虑的地方 从我的角度来出发 这题 一开始我的考虑方向是 给出的这些点会不会形成回路 就是成环 如果出现了 那就肯定是NO的 因为 题目要求 任意两点之间 路径的 唯一性 如果 成环 那就会有多条路径的出现了 至于这个是否会成环的判断 不难想到 对于每次输入的x y 通过find操作得到他们各自的 根

hdu1272并查集入门

小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41540    Accepted Submission(s): 12811 Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是

第48套题【tarjan】【图&amp;树的连通性】【并查集】

Problem 1 图的连通性??题目背景??琼和雪不知从什么时候就开始形影不离得呆在一起,无话不说了那天她们在谈论图论??题意描述??“有一个无向图,每次断掉一条边,并询问两个点时候联通,你会维护么?” 琼很认真地问.“为什么要知道这个呢?”“我们总要知道自己是否身陷囹囵……你必须立刻告诉我答案哦”??输入格式??测试数据的第一行是三个正整数n.m.t, 表示无向图有n 个点,m 条边和t 个操作接下来m 行,每行两个正整数x.y,表示x 和y 之间有一条边(允许存在重边)接下来t 行,每行三

EOJ 1816 并查集的的简单应用——判断图联通

题目:eoj1816 题目分析:判断图是否连通,可用dfs遍历图算法.这里我采用的是并查集的方法.初始化时将每个节点看作一个集合,则每给出一条边即把两个集合合并.最后遍历所有点,有几个集合便有几个连通分量,若只有一个集合说明图连通. AC代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <string> #include &

图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用

图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 B(G).其中 T(G)是遍历图时所经过的边的集合,B(G) 是遍历图时未经过的边的集合.显然,G1(V, T) 是图 G 的极小连通子图,即子图G1 是连通图 G 的生成树. 深度优先生成森林   右边的是深度优先生成森林: 连通图的生成树不一定是唯一的,不同的遍历图的方法得到不同的生成树;从不

acdream 1685 多民族王国(图,DFS,并查集变形)

Problem Description 娜娜好不容易才回忆起自己是娜娜而不是什么Alice,也回忆起了自己要继续探索这个世界的目标,便偷偷溜出皇宫.娜娜发现这个王国有很多个民族组成,每个民族都有自己的方言,更要命的是这些方面差别还很远,这就导致这个王国的人民交流十分困难.娜娜仔细观察并记录了好久,发现总共有m种不同的语言. 突然娜娜发现前面有一群天才在讨论问题,但是奈何语言问题,导致这群人交流非常吃力.不过幸亏的是,这群天才都有一个特殊的能力,只要消耗一个单位的能量即可完全领悟一门新的语言(妈妈

杭电1232(图—并查集)

畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 30798    Accepted Submission(s): 16193 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相

[POJ 1308]Is It A Tree?(并查集判断图是否为一棵有根树)

Description A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the following properties. There is exactly one node, called the root, t

ACM-并查集之小希的迷宫——hdu1272

***************************************转载请注明出处:http://blog.csdn.net/lttree*************************************** 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 24446    Accepted Submiss