1362 家庭問題 family (並查集)

2021-10-04 17:14:50 字數 2345 閱讀 6368

有n個人,編號為1,2,……n,另外還知道存在k個關係。乙個關係的表達為二元組(α,β)形式,表示α,β為同一家庭的成員。

當n,k和k個關係給出之後,求出其中共有多少個家庭、最大的家庭中有多少人?

例如:n=6,k=3,三個關係為(1,2),(1,3),(4,5)

此時,6個人組成三個家庭,即:{1,2,3}為乙個家庭,{4,5}為乙個家庭,{6}單獨為乙個家庭,第乙個家庭的人數為最多。

第一行為n,k二個整數(1≤n≤100)(用空格分隔);

接下來的k行,每行二個整數(用空格分隔)表示關係。

二個整數(分別表示家庭個數和最大家庭人數)。

6  3

1 2

1 3

4 5

3 3

暴力列舉:(差乙個點,過不了,不知道**錯了)

#include #define sf(a) scanf("%d\n",&a)

#define pf(a) printf("%.2lf\n",a)

#define pi acos(-1.0)

#define e 1e-8

#define ms(a) memset(a,0,sizeof a)

#define rep(a,b,c) for(int a=b;a<=c;a++)

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int inf=0x3f3f3f3f;

const int idata=100000+5;

int i,j,k;

int judge,flag;

//int step[idata];

//int dp[idata];

int n,m,t,ans;

int maxx=0,minn=inf;

int cnt,len,sum;

string s[idata];

vectorvec[100+5];

int tail=1,head=0;

int main()

sort(rela+1,rela+1+k);

vec[1].push_back(1);

a[1]=0;

cnt=1;

for(i=1;i<=k;i++)

else if(it==vec[j].end()&&itt!=vec[j].end())

else if(it==vec[j].end()&&itt==vec[j].end())}}

for(i=1;i<=cnt;i++)

for(i=1;i<=n;i++)

if(a[i]) cnt++;

cout《並查集:

#include #include #include #include #include #include #include #include #include #include #include #define sf(a) scanf("%d\n",&a)

#define pf(a) printf("%.2lf\n",a)

#define pi acos(-1.0)

#define e 1e-8

#define ms(a) memset(a,0,sizeof a)

#define rep(a,b,c) for(int a=b;a<=c;a++)

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int inf=0x3f3f3f3f;

const int idata=1e6+5;

int i,j,k;

int judge,flag;

int n,m,t,ans;

int maxx=0,minn=inf;

int cnt,len,sum;

//int dp[idata][idata];

priority_queue,less>q;

char *ch;

int p[idata];

int fa[idata];

int find(int son)

void union(int x,int y)

int main()

ms(p);

cnt=0,maxx=0;

for(i=1;i<=n;i++) p[find(i)]++;

for(i=1;i<=n;i++)

cout<}

return 0;

}

1362 家庭問題 family

1 include2 using namespace std 3int n,k 按要求輸入 4int a,b 按要求輸入 5int rel 105 105 用於儲存各個成員之間的關係 6int vis 105 記錄是否被訪問過 7int que 10010 定義佇列 8int f,r 定義隊首隊尾 ...

AT1251 家庭菜園

注意!1 h 和 h n 是可以有等於 h i 的,翻譯錯了 洛谷傳送門 at傳送門 為什麼會有兩個 考慮最後能夠獲得收入的位置,這些位置構成乙個先上公升再下降的序列。那麼我們可以列舉那個最高點,然後算出這個點左邊遞增的最大收入和右邊遞減的最大收入。那麼只考慮左邊,右邊同理即可。我們設 f i 表示...

PTA L2 家庭房產 並查集

題目描述 給定每個人的家庭成員和其自己名下的房產,請你統計出每個家庭的人口數 人均房產面積及房產套數 ac include include include using namespace std const int n 1e5 55 int pre n vis n tig n struct node...