leetcode_684. Redundant Connection

https://leetcode.com/problems/redundant-connection/

一个无向图,n个顶点有n条边,输出一条可以删除的边,删除后使得图成为一棵树。可以使用并查集解决。

class Solution
{
public:
    int father[1001];
    void initfather()
    {
        for(int i=1; i<=1000; i++)
            father[i]=i;
    }

    int findFather(int x)
    {
        if(father[x]!=x)
            father[x] = findFather(father[x]);
        return father[x];
    }

    void Merge(int x1, int x2)
    {
        int father_x1 = findFather(x1);
        int father_x2 = findFather(x2);
        if(father_x1 != father_x2)
            father[father_x2] = father_x1;
    }

    vector<int> findRedundantConnection(vector<vector<int>>& edges)
    {
        initfather();
        vector<int> res;
        for(auto edge:edges)
        {
            int u = edge[0];
            int v = edge[1];
            if(findFather(u) == findFather(v))
            {
                res=edge;
                break;
            }
            else
                Merge(u,v);
        }
        return res;
    }
};
原文地址:https://www.cnblogs.com/jasonlixuetao/p/10695777.html