洛谷P2307迷宮

2021-10-21 03:38:19 字數 1372 閱讀 9826

傳送門

並查集,只有有一組的兩個點是相同祖先,就說明不符合。除此之外,還需要判斷是否是同一棵樹,因此,用num記錄祖先的數量,若為1則符合。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int inf =

0x3f3f3f3f

;const

int mod =

1e9+7;

typedef pair<

int,

int> pii;

typedef

long

long ll;

const

int n =

100005

;const

int m =

200005

;int p[n]

;//祖先

intget

(int x)

intmain()

if(!p[v]

)int a =

get(u)

, b =

get(v);if

(a == b) same =1;

//相同則說明祖先一樣,已相連

else num--

;//否則,兩人祖先合二為一

p[a]

= b;

cin >> u >> v;}if

(same || num !=1)

puts

("0");

else

puts

("1");

cin >> u >> v;

}return0;

}int

main()

for(

int j =

0; j < q; j++)}

else

for(

int i =

0; i < k; i++

)scanf

("%d"

,&a[i]);

if(bfs(a[0]

))puts

("yes");

else

puts

("no");

}return0;

}

洛谷 P1605 迷宮

問題描述 給定乙個n m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和 終點座標,問 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮 中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。輸入樣例 輸出樣例 資料規模 1 n,m 5 題目描述 輸入輸...

洛谷 P1141 01迷宮

題目描述 有乙個僅由數字0與1組成的n n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。你的任務是 對於給定的迷宮,詢問從某一格開始能移動到多少個格仔 包含自身 輸入輸出格式 輸入格式 輸入的第1行為兩個正整數n,m。...

洛谷P1141 01迷宮

01迷宮 問題描述 有乙個僅由數字0與1組成的n n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。你的任務是 對於給定的迷宮,詢問從某一格開始能移動到多少個格仔 包含自身 分析 bfs,對於每個連通的格仔答案都是一樣的...