POJ 2492 A bug's life【擴充套件域 | 邊帶權並查集】
Background
Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they feature two different genders and that they only interact with bugs of the opposite gender. In his experiment, individual bugs and their interactions were easy to identify, because numbers were printed on their backs.
Problem
Given a list of bug interactions, decide whether the experiment supports his assumption of two genders with no homosexual bugs or if it contains some bug interactions that falsify it.
Input
The first line of the input contains the number of scenarios. Each scenario starts with one line giving the number of bugs (at least one, and up to 2000) and the number of interactions (up to 1000000) separated by a single space. In the following lines, each interaction is given in the form of two distinct bug numbers separated by a single space. Bugs are numbered consecutively starting from one.
Output
The output for every scenario is a line containing "Scenario #i:", where i is the number of the scenario starting at 1, followed by one line saying either "No suspicious bugs found!" if the experiment is consistent with his assumption about the bugs' sexual behavior, or "Suspicious bugs found!" if Professor Hopper's assumption is definitely wrong.
Sample Input
2 3 3 1 2 2 3 1 3 4 2 1 2 3 4
Sample Output
Scenario #1: Suspicious bugs found! Scenario #2: No suspicious bugs found!
Hint
Huge input,scanf is recommended.
題解:擴充套件域解法:用 n+x 表示與 x 性別相反的蟲子。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 2000+7;
int fa[maxn<<1];
int get(int x) {
if(x == fa[x]) return x;
return fa[x] = get(fa[x]);
}
void Merge(int x, int y) {
fa[get(x)] = get(y);
}
int main()
{
int t, n, m;
int cnt = 0;
scanf("%d", &t);
for(int i = 1; i <= t; i++) {
int flag = 1;
scanf("%d %d", &n, &m);
for(int i = 1; i <= 2*n; i++)
fa[i] = i;
int a, b;
while(m--) {
scanf("%d %d", &a, &b);
if(get(a) != get(b)){//a, b 不是同性
Merge(a+n, b);//合併同一性別的蟲子
Merge(a, b+n);
}
else flag = 0;//a, b是同性
}
printf("Scenario #%d:\n", i);
if(!flag) printf("Suspicious bugs found!\n");
else printf("No suspicious bugs found!\n");
if(i != t) printf("\n");
}
return 0;
}
相關文章
- POJ 2492-A Bug's Life(帶權並查集)並查集
- POJ 2492 A Bug's Life(關係並查集)並查集
- POJ 1182 食物鏈【擴充套件域 | 邊帶權並查集】套件並查集
- POJ 1733 Parity【擴充套件域並查集】套件並查集
- 關押罪犯 擴充套件域並查集 帶權並查集 二分圖+二分套件並查集
- POJ2492(種類並查集)並查集
- 並查集擴充套件並查集套件
- 並查集擴充套件應用並查集套件
- 並查集到帶權並查集並查集
- HDU 3234 Exclusive-OR 擴充套件並查集套件並查集
- CHOJ 4101 銀河英雄傳說【邊帶權並查集】並查集
- 【資料結構】帶權並查集資料結構並查集
- 樹(tree) - 題解(帶權並查集)並查集
- 安裝phpxdebug擴充套件PHP套件
- 【帶權並查集】理論和應用並查集
- POJ 2891 Strange Way to Express Integers(擴充套件GCD)Express套件GC
- POJ1061擴充套件歐幾里得定理套件
- 擴充套件叢集blk數套件
- 乾貨丨如何水平擴充套件和垂直擴充套件DolphinDB叢集?套件
- 【並查集】【帶偏移的並查集】食物鏈並查集
- 【記錄】安裝 Xdebug 擴充套件套件
- [記錄] 安裝 Xdebug 擴充套件套件
- IE CSS Bug系列:高度額外擴充套件的BugCSS套件
- PHP安裝Xdebug擴充套件並配置PHPstorm除錯(Centos、Windows)PHP套件ORM除錯CentOSWindows
- HDU 3038 How Many Answers Are Wrong (帶權並查集)並查集
- POJ 1308-Is It A Tree?(並查集)並查集
- 【POJ 1182】食物鏈(並查集)並查集
- in_list查詢與or擴充套件套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- bzoj4690: Never Wait for Weights(帶權並查集)AI並查集
- C Looooops(poj2115+擴充套件歐幾里德)OOP套件
- POJ1797 Heavy Transportation【並查集+貪心】並查集
- POJ 1703-Find them, Catch them(並查集)並查集
- 擴充套件.Django-許可權系統套件Django
- Django內建許可權擴充套件案例Django套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 開源 | FLUI : Flutter 的元件擴充套件集UIFlutter元件套件
- SuperEdge: 使用WebAssembly擴充套件邊緣計算場景Web套件