684. 冗余连接

题目给定一个树添加一条边后的图,需要找出添加的边。思路为遍历所有边,用并查集维护集合,当一条边的两个端点已经在同一集合时,说明即为最后添加的边。

 1 const int N=1010;
 2 int p[N];
 3 class Solution {
 4 public:
 5     int find(int x){
 6         while(p[x]!=x){
 7             x=p[x];
 8         }
 9         return x;
10     }
11     vector<int> findRedundantConnection(vector<vector<int>>& edges) {
12         //并查集
13         for(int i=0;i<N;i++)
14             p[i]=i;
15         for(vector<int> edge:edges){
16             int a=edge[0],b=edge[1];
17             if(find(a)!=find(b)){
18                 p[find(b)]=find(a);
19             }else{
20                 return {a,b};
21             }
22         }
23         return {};
24     }
25 };

 

posted on 2024-10-27 13:04  greenofyu  阅读(3)  评论(0编辑  收藏  举报