码迷,mamicode.com
首页 > 其他好文 > 详细

hdu1272 小希的迷宫

时间:2016-02-08 21:23:43      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

题意:就是不存在环,而且各点相互连通

 

分析:就是一颗树,树的条件,连通,不含圈,边恰好为n-1个,只要满足其中两个条件就可以了,这道题统计节点个数,可以用set,map统计,用并查集

判断是否存在圈,只要注意空树也是正确答案就行了

 

代码:

 

 
  2016/2/8

 

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;

int p[maxn],v[maxn];

void init(){
    memset(v,0,sizeof(v));
    for(int i=0;i<maxn;i++)
        p[i]=i;
}

int find(int x){
    return p[x]==x?x:p[x]=find(p[x]);
}

int main(){
    int d=0,maxid=0,x,y;
    bool ok=1;
    init();
    while(~scanf("%d%d",&x,&y)){
        if(x==0&&y==0){
            if((ok&&d==maxid-1)||d==0)
                puts("Yes");
            else
                puts("No");
            maxid=d=0;init();ok=1;continue;
        }
        if(x==-1&&y==-1)
            return 0;
        d++;
        if(!ok)
            continue;
        if(!v[x]){
            maxid++;
            v[x]=1;
        }
        if(!v[y]){
            maxid++;
            v[y]=1;
        }
        int nx=find(x);
        int ny=find(y);
        if(nx!=ny)
            p[nx]=p[ny];
        else
            ok=0;
    }
}

hdu1272 小希的迷宫

标签:

原文地址:http://www.cnblogs.com/jihe/p/5185215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!