【并查集】 HDU 1272 小希的迷宫

来源:互联网 发布:linux中查看磁盘空间 编辑:程序博客网 时间:2024/05/09 15:19

HDU 1272 小希的迷宫

需要判断是否是连通图。

#include <iostream>#include <string>#include <algorithm>#include <math.h>#include <stdio.h>#include <cstring>#include <stdlib.h>using namespace std;int father[100001], vis[100001];int get_fa(int x){    if(x != father[x]) father[x] = get_fa(father[x]);    return father[x];}int main(){    for(int i  = 0;i <= 100001; i++)        father[i] = i;    int flag = 0, cnt = 0;    int maxx = -0x3f3f3f3f;    memset(vis, 0, sizeof(vis));    while(1)    {        int a, b;        scanf("%d%d", &a, &b);        if(a == 0 && b == 0)        {            for(int i = 1; i <= maxx; i ++)                if(get_fa(i) == i && vis[i] == 1) cnt++;            if(flag == 0 && cnt <= 1) puts("Yes");            else puts("No");            flag = 0;            cnt = 0;            maxx = -0x3f3f3f3f;            for(int i  = 0;i <= 100001; i++)                father[i] = i, vis[i] = 0;            continue;        }        if(a == -1 && b == -1) break;        maxx = max(maxx, a);        maxx = max(maxx, b);        vis[a] = vis[b] = 1;        a = get_fa(a), b = get_fa(b);        if(a != b) father[b] = a;        else if(a == b) flag = 1;    }    return 0;}

0 0
原创粉丝点击