pta1114麻煩的並查集

2021-10-03 19:30:57 字數 1123 閱讀 9197

題目:給乙個數n,之後說明n個人財產情況,格式為  人員編號  父編號  母編號  孩子個數  數個孩子編號---  房產數量   房產面積

雖然讓求出有多少個家族及家族平均財產情況,輸出為 

家族編號最小成員  家族人數  平均房山數(三位小數) 平均面積(三位小時)

之前顯是在輸入上卡了很久double和float的輸入均為%f不是%lf!!

輸出也要注意

printf("%04d %d %.3lf %.3lf\n", v2[i].n, v2[i].num, v2[i].s, v2[i].a);

還有初始化的問題

struct node

}v[10005];

思路問題,乍一看知道是並查集,但又比較麻煩,顯示把家族合併,然後把財產先歸到個人,最後遍歷,把財產加給那個最小的成員(也就是祖先),最後計算平均排序

int zu[10005];

int pan[10005];

struct node

}v[10005];   //這樣建立可以建立一系列已經被初始化的node

int qiuzu(int a)

void marge(int a, int b)

bool cmp(node a, node b)

int main(void)

if (c != -1)

int n2;

scanf("%d", &n2);

for (j = 0;j < n2;j++)  //接受孩子並合併孩子

scanf("%f%f", &v[a].s, &v[a].a);  //把所有房產算到本人頭上,這裡卡了一下,之前不小心寫成%lf就亂碼

}sets;

for (i = 9999;i >= 0;i--)  }}

set::iterator it;

vectorv2;

for (it = s.begin();it != s.end();it++)   //遍歷家族,並求出人均財產

sort(v2.begin(), v2.end(), cmp);

printf("%d\n", v2.size());

for (i = 0;i < v2.size();i++)

return 0;

}

PTA 排座位 並查集

並查集 布置宴席最微妙的事情,就是給前來參宴的各位賓客安排座位。無論如何,總不能把兩個死對頭排到同一張宴會桌旁!這個艱鉅任務現在就交給你,對任何一對客人,請編寫程式告訴主人他們是否能被安排同席。輸入第一行給出3個正整數 n le 100 即前來參宴的賓客總人數,則這些人從1到 n編號 m為已知兩兩賓...

PTA朋友圈 並查集

某學校有n個學生,形成m個俱樂部。每個俱樂部裡的學生有著一定相似的興趣愛好,形成乙個朋友圈。乙個學生可以同時屬於若干個不同的俱樂部。根據 我的朋友的朋友也是我的朋友 這個推論可以得出,如果a和b是朋友,且b和c是朋友,則a和c也是朋友。請編寫程式計算最大朋友圈中有多少人。輸入的第一行包含兩個正整數n...

並查集 排座位 PTA

輸出 no problem okok but.no way 題意 輸入一堆關係以後判斷兩個人能不能坐在一起,不同關係對應不同輸出 思路 用並查集可以在fa陣列中儲存乙個朋友圈裡的領頭人物。之後判斷時候只要看這兩個人fa陣列中存的領頭人物是不是同乙個人就ok了 include include incl...