HDU 4496 並查集 逆向思維

2022-05-20 10:32:02 字數 1097 閱讀 4996

給你n個點m條邊,保證已經是個連通圖,問每次按順序去掉給定的一條邊,當前的連通塊數量。

與其正過來思考當前這邊會不會是橋,不如倒過來在n個點即n個連通塊下建圖,檢查其連通性,就能知道個數了

/** @date    : 2017-09-21 23:26:20

* @filename: hdu 4496 並查集 逆向思維.cpp

* @platform: windows

* @author : lweleth ([email protected])

* @link :

* @version : $id$

*/#include #define ll long long

#define pii pair#define mp(x, y) make_pair((x),(y))

#define fi first

#define se second

#define pb(x) push_back((x))

#define mmg(x) memset((x), -1,sizeof(x))

#define mmf(x) memset((x),0,sizeof(x))

#define mmi(x) memset((x), inf, sizeof(x))

using namespace std;

const int inf = 0x3f3f3f3f;

const int n = 1e5+20;

const double eps = 1e-8;

int n, m;

pii p[n];

int ans[n];//

int fa[10010];

int find(int x)

int join(int a, int b)

return 0;

}int main()

int cnt = n;

for(int i = m; i >= 1; i--)

for(int i = 1; i <= m; i++)

printf("%d\n", ans[i]);

} return 0;

}

逆向並查集(zoj 3261,hdoj 4496)

zoj 3261connections in galaxy war 題目大意 銀河中一些星球之間有通道可以聯絡,然而另乙個維度的怪物將某些聯絡破壞了。因此當有些星球需要幫助時,就需要判斷一下能不能找到乙個直接或間接聯絡的星球,並且這個星球的力量是與該星球連線的所有星球中最大的。如果有這麼乙個星球,則...

逆向並查集

題目 題目.題意 有n個戰艦 0 n 1 每個戰艦有乙個戰鬥力,然後輸入乙個m表示m對戰艦聯合,然後輸入乙個q表示q次查詢。接下來q行有兩種輸入 1 query x 表示查詢和x戰艦聯合對戰艦中攻擊力最大的戰艦的編號 如果戰鬥力相同輸出小的編號 如果沒有就輸出 1.2 destroy x y 破壞x...

無效位置 逆向思維 並查集 線性基

原題傳送門 序列異或最大,或者最小,都可以用線性基來算,至於線性基是什麼,可以看看線性基詳解。因為要避免選中我們所刪除的數字,但是這樣很難做到。所以可以逆向思維考慮一下,如果我們從後往前推,每刪除乙個數字,就是加入乙個新的數字,並且,如果它左右兩邊已經有數字了,就可以把它們並為乙個集合,否則它就是單...