題目鏈結在這裡
題目大意
bug分公母,有n個bug,m個描述,每個描述裡有x和y,代表這兩個bug是一對。問給出m個描述之後會不會有同性戀現象。
解題思路
每個bug的權值初始時設定成0,權值代表著這個bug和其祖宗的性別差異,如果是1就表示是異性,0代表同性。然後在合併的時候,如果發現它們之前已經合併過了並且它們的權值相加為偶數,則就是同性戀。
**如下
#include #include #include #include #include #define rep(i, n) for(int i = 0; i < n; ++i)
#define clr(x) memset(x, 0, sizeof(x))
using namespace std;
const int maxn = 2010;
int n, m;
int par[maxn], rank[maxn];
int t;
void init()
}int find(int x)
bool unite(int x, int y)
par[fx] = fy;
rank[fx] = (1 + rank[y] - rank[x]) % 2;
return true;
}int main();
rep(tt, t)
cout << "scenario #" << tt + 1 << ":" << endl;
cout << co[flag] << endl << endl;
}return 0;
}
poj2492 種類並查集 各種解法
題意 有t組測試資料,對於每組資料,第一行n,m分別表示昆蟲的數目和接下來m行x,y,x,y表示教授判斷x,y為異性,問教授是否有錯誤判斷,即存在x,y為同性 這道題和poj1703類似,不過更簡單一點 poj1703題解 解法1 我們可以用rank x 記錄x與其父親節點的關係,rank x 0表...
並查集,帶權並查集
題意 ignatius過生日,客人來到,他想知道他需要準備多少張桌子。然而一張桌子上面只能坐上相互熟悉的人,其中熟悉可定義成為a與b認識,b與c認識,我們就說a,b,c相互熟悉 例如a與b熟悉and b與c熟悉,d與e熟悉,此時至少需要兩張桌子。輸入 t表示樣例個數,n表示朋友個數,朋友從1到n編號...
poj 1182 帶權並查集
description 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n編號。每個動物都是a,b,c中的一種,但是我們並不知道它到底是哪一種。有人用兩種說法對這n個動物所構成的食物鏈關係進行描述 第一種說法是 1 x y 表示x和y是...