HDU 1272 小希的迷宮 並查集

2021-08-18 16:40:11 字數 3163 閱讀 3944

題目鏈結

思路

只需要判斷 這張圖 無環 並且只有乙個連通塊 就可以了

要注意 如果 只輸入 0 0 那給的是空圖 要給出 yes

判斷 無環 有兩個方法

0.在並查集的合併操作中 如果 find(x) == find(y) 就說明 x 和 y 已經有一條邊了 再加 就是成環了 直接 flag = 0

1.我們可以對邊的個數 計數 只有 邊數== 結點個數-1 才是滿足條件的

ac**

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define clr(a, b) memset(a, (b), sizeof(a))

#define pb push_back

using

namespace

std;

typedef

long

long ll;

typedef

long

double ld;

typedef

unsigned

long

long ull;

typedef pair pii;

typedef pair pll;

typedef pair psi;

typedef pair pss;

const

double pi = acos(-1.0);

const

double e = exp(1.0);

const

double eps = 1e-30;

const

int inf = 0x3f3f3f3f;

const

int maxn = 1e5 + 10;

const

int mod = 1e9 + 7;

int pre[maxn];

int find(int x)

return r;

}void join(int x, int y)

void init()

int main()

else

map m;

int len = s.size();

while (!s.empty())

int flag = 1;

if (edge != len - 1 || m.size() != 1)

flag = 0;

if (flag)

printf("yes\n");

else

printf("no\n");

s.clear();

edge = 0;

init();}}

}

ac**

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define clr(a, b) memset(a, (b), sizeof(a))

#define pb push_back

using

namespace

std;

typedef

long

long ll;

typedef

long

double ld;

typedef

unsigned

long

long ull;

typedef pair pii;

typedef pair pll;

typedef pair psi;

typedef pair pss;

const

double pi = acos(-1.0);

const

double e = exp(1.0);

const

double eps = 1e-30;

const

int inf = 0x3f3f3f3f;

const

int maxn = 1e5 + 10;

const

int mod = 1e9 + 7;

int pre[maxn];

int flag;

int find(int x) //路徑壓縮

return r;

}//int find(int x)

//void join(int x, int y)

void init()

int main()

else

map m;

int len = s.size();

while (!s.empty())

if (m.size() != 1)

flag = 0;

if (flag)

printf("yes\n");

else

printf("no\n");

s.clear();

init();

flag = 1;}}

}

hdu 1272 小希的迷宮(並查集)

題意 略分析 由於是無向圖且是一棵樹,也就是n個節點,n 1條邊,題目要求是每個定點都是雙連通,也就是所有頂點都在乙個強連通分量裡面,這裡可以使用求ssc的演算法,但是由於十無向圖使用並查集的變成複雜度降低了很多,trick 0 0 no.code include include include i...

HDU 1272 小希的迷宮(並查集)

小希的迷宮 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit go back status description 上次gardon的迷宮城堡小希玩了很久 見problem b 現在她也想設計乙個迷宮讓ga...

HDU1272 小希的迷宮 並查集

題目大意 給出乙個迷宮,如果他是連通的且沒有平行路徑,輸出yes,否則輸出no。並查集紀錄每個點的連通狀態,對於每輸入的兩個點,合併他們的同時,看他們是否有相同的父親,若有,則不符合題意。資料輸入完之後,再判斷一下根結點是否唯一便可知該迷宮是否連通了。include include include ...