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