#include
using
namespace std;
/*2≤n≤1000, n表示節點個數
1≤m≤n(n−1)2, m表示最大邊數,每個點除自身外,可以和剩下的n-1個點,相連,所以是n*n(n-1) 注意這樣所有的邊倍計算了兩次,所以最後是n*(n-1)/2
*/const
int maxn=
500010
;int n,m,k;
struct node //邊的 結構,一條邊上的 兩個 點
node[maxn]
;int p[maxn]
;int
find
(int x)
//背過
intmain()
while
(k--)}
} cout << cnt-
1<< endl;
//最後的 cnt表示 連通塊數,需要求得邊 就是 連通塊數-1
}return0;
}
#include
#include
#include
using
namespace std;
const
int maxn=
500010
;struct node
e[maxn]
;int hc[maxn]
,ha[maxn]
;//hc表示id對應的房子個數,ha表示id對應的房子面積
int p[maxn]
,c[maxn]
;bool st[maxn]=;
intfind
(int x)
struct family
;bool
cmp(family a,family b)
return a.id}int
main()
;if(mother!=-1
) e[m++]=
;for
(int j=
0; j} cin >> hc[id]
>> ha[id]
;//注意 輸入
}for
(int i=
0; i)for
(int i =
0; i < m; i ++)}
for(
int i=
0; i;}
} cout << node.
size()
<< endl;
sort
(node.
begin()
,node.
end(
),cmp)
;for
(int i=
0; isize()
; i++
)}
#include
using
namespace std;
const
int maxn=
10010
;struct node
node[maxn]
;bool st[maxn]
;int n;
int p[maxn]
;int
find
(int x)
intmain()
if(i==0)
daibiao=temp2;
if(i!=0)
node[m++]=
;}}for
(int i=
1; i<=maxn; i++
) p[i]
=i;int cnt=niaoshu;
for(
int i=
0; icout << cnt <<
" "<< niaoshu << endl;
int kk;
cin >> kk;
int wsf,xx;
while
(kk--
)return0;
}
/*
題意:每個人給出他的興趣,然後在根據共有的興趣,統計出來人數
1.用vector陣列,下標表示興趣愛好,下面的值是人的編號
2.由於興趣愛好的編號是從1---1000,所以需要全部遍歷,然後以該下面值的第乙個作為根節點,然後進行合併
3.由於上面的合併 是 以人的 節點 作為 下標,所以 通過遍歷 每個 人的 編號,去找到每個人的 編號的 根節點,並統計個數,所以先統計出塊數,然後排序,然後輸出興趣下的人數
*/#include
#include
#include
using
namespace std;
const
int maxn=
1010
;vector<
int> xx[maxn]
;int p[maxn]
;int n;
intfind
(int x)
bool
cmp(
int a,
int b)
intmain()
}for
(int i=
1; i<=n
; i++
) p[i]
=i;for
(int i=
1; i<=
1000
; i++
)//興趣 最大值 就是 1000
}int renshu[maxn]=;
for(
int i=
1; i<=n; i++
)int ans=0;
for(
int i=
1; i<=n; i++
) cout << ans << endl;
sort
(renshu+
1,renshu+n+
1,cmp)
;for
(int i=
1; i<=ans; i++
)}
#include
#include
using
namespace std;
//再輸入的 過程 中每次 更新 滿足條件的 最小值,
intmain()
}else
hash1.
insert
(x);}if
(v1==
1e9)
cout <<
"no solution"
;else
cout << v1 <<
" "<< v2;
return0;
}
並查集 並查集
本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...
並查集入門(普通並查集 帶刪除並查集 關係並查集)
什麼是並查集?通俗易懂的並查集詳解 普通並查集 基礎並查集 例題 題解 how many tables problem description lh boy無聊的時候很喜歡數螞蟻,而且,還給每乙隻小螞蟻編號,通過他長期的觀察和記錄,發現編號為i的螞蟻會和編號為j的螞蟻在一起。現在問題來了,他現在只有...
並查集,帶權並查集
題意 ignatius過生日,客人來到,他想知道他需要準備多少張桌子。然而一張桌子上面只能坐上相互熟悉的人,其中熟悉可定義成為a與b認識,b與c認識,我們就說a,b,c相互熟悉 例如a與b熟悉and b與c熟悉,d與e熟悉,此時至少需要兩張桌子。輸入 t表示樣例個數,n表示朋友個數,朋友從1到n編號...