n個數,分別是1-n,現把他們分堆並給出兩兩關係例如2-5 1-5,給出關係的兩個數必須在同一堆,問最大分堆數。
建圖dfs或者並查集。
沒有寫,先貼乙個模板上來。
// 1389.cpp : 定義控制台應用程式的入口點。
// 並查集,求每個集合中的元素個數
// 在合併時將子樹中的結點數目加到根結點
#include
"stdafx.h"
#include
#include
#define max 100000+5
int father[max]
;//父節點
int people[max]
;//每個集合中的元素個數
int rank[max]
;//秩
intfind
(int x)
//合併並返回合併後的祖先序號
void
union
(int x,
int y)
else
}//計算集合的個數
intcount_sets
(int n)
intmain()
char cmd;
int x, y;
while
(m--
)else
if(cmd ==
'q')
}printf
("集合個數:%d\n"
,count_sets
(n))
;system
("pause");
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 ...
小公尺麵試題 朋友圈問題 並查集
假如已知有n個人和m對好友關係 存於數字r 如果兩個人是直接或間接的好友 好友的好友的好友.則認為他們屬於同乙個朋友圈,請寫出程式求出這n個人裡一共有多少朋友圈。例如 n 5,m 3,r 表示有5個人,1和2是好友,2和3是好友,4和5是好友。則1,2,3屬於乙個朋友圈,4,5屬於另乙個朋友圈,結果...
面試題集 redis
1.redis常用的五種資料型別 1.string 字串 string是簡單的 key value 鍵值對,value 不僅可以是 string,也可以是數字。它是redis最基本的資料型別,乙個redis中字串value最多可以是512m。2.hash 雜湊 redis hash 是乙個鍵值對集合...