leetcode 684 冗餘連線 ufs

2021-10-04 01:44:12 字數 1068 閱讀 7244

解題思路: ufs 並查集中

關鍵:一條邊的兩個節點的父節點不相同則union,若相同則說明這兩個節點之前已經被union過即此邊為多餘邊。(請細品)

並查集用了路徑壓縮和按秩歸併提高效率。

/**

* note: the returned array must be malloced, assume caller calls free().

*/typedef struct ufs_t;

ufs_t * initufs(int n)

return ufs;

}void destoryufs(ufs_t *ufs)

}int findufs(ufs_t *ufs, int x)

return ufs->p[x] = findufs(ufs, ufs->p[x]);

}int merge(ufs_t *ufs, int x, int y)

ufs->p[fx] += ufs->p[fy];

ufs->p[fy] = fx;

return 0;

}int ufs_set_size(ufs_t *ufs, int x)

int* findredundantconnection(int** edges, int edgessize, int* edgescolsize, int* returnsize)

ufs_t *ufs = initufs(edgessize + 1);

int i;

for (i = 0; i < edgessize; i++)

}destoryufs(ufs);

int * res = (int *)malloc(*edgescolsize * sizeof(int));

res[0] = edges[i][0];

res[1] = edges[i][1];

*returnsize = 2;

return res;

}

LeetCode684冗餘連線

在本問題中,樹指的是乙個連通且無環的無向圖。輸入乙個圖,該圖由乙個有著n個節點 節點值不重複1,2,n 的樹及一條附加的邊構成。附加的邊的兩個頂點包含在1到n中間,這條附加的邊不屬於樹中已存在的邊。結果圖是乙個以邊組成的二維陣列。每乙個邊的元素是一對 u,v 滿足u v,表示連線頂點u和v的無向圖的...

leetcode 684冗餘連線

在本問題中,樹指的是乙個連通且無環的無向圖。輸入乙個圖,該圖由乙個有著n個節點 節點值不重複1,2,n 的樹及一條附加的邊構成。附加的邊的兩個頂點包含在1到n中間,這條附加的邊不屬於樹中已存在的邊。結果圖是乙個以邊組成的二維陣列。每乙個邊的元素是一對 u,v 滿足u v,表示連線頂點u和v的無向圖的...

LeetCode 684 冗餘連線

在本問題中,樹指的是乙個連通且無環的無向圖。輸入乙個圖,該圖由乙個有著n個節點 節點值不重複1,2,n 的樹及一條附加的邊構成。附加的邊的兩個頂點包含在1到n中間,這條附加的邊不屬於樹中已存在的邊。結果圖是乙個以邊組成的二維陣列。每乙個邊的元素是一對 u,v 滿足 u v,表示連線頂點u 和v的無向...