并查集题目:移除石头

百忙之中刷一道算法题

 

 

 

 一眼看出来就是并查集了

class Solution {
public:
    int f[20000+10];
    int find(int x) {
        if(f[x] != x) f[x] = find(f[x]);
        return f[x]; 
    }

    int removeStones(vector<vector<int>>& stones) {
        for(int i = 0; i < 20010; i++) f[i] = i;
        for(auto& e : stones) {
            int x = find(e[0] + 10000);
            int y = find(e[1]);
            f[x] = y;
        }

        set<int> res;
        for(auto& e : stones) {
            res.insert(find(e[1]));
        }
        return stones.size() - res.size();
    }
};

 

 无敌!

posted @ 2021-01-15 19:01  然终酒肆  阅读(83)  评论(0编辑  收藏  举报