leetcode 547 朋友圈 C語言

2021-10-04 09:14:01 字數 1103 閱讀 2616

班上有 n 名學生。其中有些人是朋友,有些則不是。他們的友誼具有是傳遞性。如果已知 a 是 b 的朋友,b 是 c 的朋友,那麼我們可以認為 a 也是 c 的朋友。所謂的朋友圈,是指所有朋友的集合。

給定乙個 n * n 的矩陣 m,表示班級中學生之間的朋友關係。如果m[i][j] = 1,表示已知第 i 個和 j 個學生互為朋友關係,否則為不知道。你必須輸出所有學生中的已知的朋友圈總數。

示例 1:

輸入: 

[[1,1,0],

[1,1,0],

[0,0,1]]

輸出: 2 

說明:已知學生0和學生1互為朋友,他們在乙個朋友圈。

第2個學生自己在乙個朋友圈。所以返回2。

示例 2:

輸入: 

[[1,1,0],

[1,1,1],

[0,1,1]]

輸出: 1

說明:已知學生0和學生1互為朋友,學生1和學生2互為朋友,所以學生0和學生2也是朋友,所以他們三個在乙個朋友圈,返回1。

注意:n 在[1,200]的範圍內。

對於所有學生,有m[i][i] = 1。

如果有m[i][j] = 1,則有m[j][i] = 1。

簡單的並查集問題

#define max_student 200

// 記錄節點的祖父節點

int g_father[max_student];

// 並查集

// 返回祖父節點

int unionsearch(int id)

son = id;

while (g_father[id] != id)

// 壓縮演算法

// 把這條鏈上的節點的祖父節點都設定為id

// 使層級變成兩層

while (son != g_father[id])

return id;

}int findcirclenum(int** m, int msize, int* mcolsize)

for (i = 0; i < msize; i++) }}

}return friendcirclenum;

}

位元組專題 leetcode 547 朋友圈

547.朋友圈 班上有 n 名學生。其中有些人是朋友,有些則不是。他們的友誼具有是傳遞性。如果已知 a 是 b 的朋友,b 是 c 的朋友,那麼我們可以認為 a 也是 c 的朋友。所謂的朋友圈,是指所有朋友的集合。給定乙個 n n 的矩陣 m,表示班級中學生之間的朋友關係。如果m i j 1,表示已...

並查集應用 leetcode547朋友圈

班上有 n 名學生。其中有些人是朋友,有些則不是。他們的友誼具有是傳遞性。如果已知 a 是 b 的朋友,b 是 c 的朋友,那麼我們可以認為 a 也是 c 的朋友。所謂的朋友圈,是指所有朋友的集合。給定乙個 n n 的矩陣 m,表示班級中學生之間的朋友關係。如果m i j 1,表示已知第 i 個和 ...

Leetcode C 隨手刷 547 朋友圈

班上有 n 名學生。其中有些人是朋友,有些則不是。他們的友誼具有是傳遞性。如果已知 a 是 b 的朋友,b 是 c 的朋友,那麼我們可以認為 a 也是 c 的朋友。所謂的朋友圈,是指所有朋友的集合。給定乙個 n n 的矩陣 m,表示班級中學生之間的朋友關係。如果m i j 1,表示已知第 i 個和 ...