3244. 新增道路查询后的最短距离 II

原题链接

题解

建桥相当于把区间内的路合并起来,这引导我们用并查集维护

可是具体如何实现呢?

我们令桥内的所有节点的统一指向最右端点作为首领,然后对于桥内的所有小,每次更新完了之后往右边走一格

code

class Solution {
public:

    int fa[2000005];
    int finds(int now){return fa[now]==now?now:fa[now]=finds(fa[now]);}
    vector<int> shortestDistanceAfterQueries(int n, vector<vector<int>>& queries) {
        for(int i=0;i<=n;i++)fa[i]=i;

        vector<int>rec;    
        int ans=n-1;
        for(auto it:queries)
        {
            int l=it[0],r=it[1];
           // printf("l:%d  r:%d\n",l,r);
            for(int i=finds(l+1);i<finds(r);i=finds(i+1))
            {
                int fx=finds(i);
                //printf("fr:%d  fx:%d\n",finds(r),fx);
                if(fx != finds(r)) {
                    fa[fx] = finds(r);
                    ans--;
                }

            }
           // for(int i=1;i<n;i++) printf("i:%d  fai:%d\n",i,finds(i));
            //puts("");
            rec.push_back(ans);
        }
        return rec;
    }
};
posted @   纯粹的  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示