首页 > 其他分享 >(nice!!!)LeetCode 3067. 在带权树网络中统计可连接服务器对数目(深度优先搜索dfs、树)

(nice!!!)LeetCode 3067. 在带权树网络中统计可连接服务器对数目(深度优先搜索dfs、树)

时间:2024-06-04 11:00:41浏览次数:29  
标签:cnt int signalSpeed vector 3067 dfs 权树 节点

3067. 在带权树网络中统计可连接服务器对数目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路:节点数最多1000,那么我们0(n^2)的时间复杂度就ok了。我们可以用一层for循环遍历每一个点i,然后第二层for循环遍历每一条可能的边j,通过用dfs来找到符合“到根节点i的距离可以被signalSpeed整除”的点。不同子节点之间两两组合,得到满足要求的组合。
dfs函数里的参数有:当前节点u、父节点fa、到根节点i的距离dis、signalSpeed
返回值是:符合“到根节点i的距离可以被signalSpeed整除

class Solution {
public:
    vector<vector<pair<int,int>>> g;
    vector<int> v;

    int dfs(int u,int fa,int dis,int &signalSpeed){
        int cnt=(dis%signalSpeed)==0;
        for(int i=0;i<g[u].size();i++){
            if(g[u][i].first==fa) continue;
            cnt+=dfs(g[u][i].first,u,dis+g[u][i].second,signalSpeed);
        }
        return cnt;
    }
    vector<int> countPairsOfConnectableServers(vector<vector<int>>& edges, int signalSpeed) {
        int n=edges.size()+1;
        g=vector<vector<pair<int,int>>>(n);
        v=vector<int>(n,0);
        //先转化为邻接表
        for(int i=0;i<n-1;i++){
            int x=edges[i][0],y=edges[i][1],w=edges[i][2];
            g[x].push_back({y,w});
            g[y].push_back({x,w});
        }
        //遍历每一个点
        for(int i=0;i<n;i++){
            int cnt=0;
            int sum=0;
            //遍历链接节点i的每一条边
            for(int j=0;j<g[i].size();j++){
            	//返回的t是符合“到根节点i的距离可以被signalSpeed整除”的点的总数
                int t=dfs(g[i][j].first,i,g[i][j].second,signalSpeed);
                //两两组合
                cnt+=t*sum;
                sum+=t;
            }
            v[i]=cnt;
        }
        return v;
    }
};

标签:cnt,int,signalSpeed,vector,3067,dfs,权树,节点
From: https://blog.csdn.net/weixin_46028214/article/details/139436306

相关文章

  • ../common/fdfs_global.h:17:26: fatal error: sf/sf_global.h: No such file or dire
    安装fastdfs之前需要安装一下libserverframe在解压后的fastdfs文件夹下的INSTALL里有说 打开链接:https://github.com/happyfish100/libserverframe/tags,选择一个合适的版本 [root@hqqfastdfs]#tar-zxvflibserverframe-1.2.3.tar.gz[root@hqqfastdfs]#cdlibserv......
  • datax修改 hdfsReader源码实现空文件及目录为空时,程序退出不抛出异常
    最近在使用datax_202309时,有任务需要将hive的数据按天同步到mysql,由于同步的表由业务生成,故可能有的表当天是没有数据产生,就会抛出出现下面的错误:问题:datax读取hive分区表时,datax-hdfsReader读取空目录报错问题描述:com.alibaba.datax.common.exception.DataXException:Code:[......
  • hdfsreader
    hdfsreader来源:github-datax-hdfsreader1快速介绍HdfsReader提供了读取分布式文件系统数据存储的能力。在底层实现上,HdfsReader获取分布式文件系统上文件的数据,并转换为DataX传输协议传递给Writer。目前HdfsReader支持的文件格式有textfile(text)、orcfile(orc)、rcfile(rc)、sequ......
  • Windows Server 2022上使用DFS文件服务器
    WindowsServer2022上使用DFS(分布式文件系统)作为文件服务器的初级应用大纲:课程内容介绍DFS什么是DFS?DFS的优势和应用场景部署WindowsServer2022WindowsServer2022的安装和配置安装DFS角色在WindowsServer2022上安装DFS角色创建DFS命名空间创建DFS......
  • 老域控升级注意事项DFS FRS
    要看2016的sysvol复制方式是不是DFS,2008r2以上的原生域复制方式默认都是DFS了,2003和以前的版本是FRS,如果是从2003升级上来的AD,没改的话还是FRS,FRS最高支持到win2016判断SYSVOL复制方式使用的是DFSR还是FRS:1.在任意一台域控上检查注册表HKEY_LOCAL_MACHINE\System\CurrentCon......
  • Hadoop HDFS DataNode动态扩容机制
    胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,SpringCloudAlibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电......
  • Hadoop HDFS DataNode存储高性能,高可用和高并发设计
    胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,SpringCloudAlibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电......
  • Hadoop学习之hdfs的操作
    Hadoop学习之hdfs的操作1.将HDFS中的文件复制到本地packagecom.shujia.hdfs;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importorg.junit.After;importorg.junit.Before;importor......
  • 数据是如何写入到Hadoop HDFS中的?
    胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,SpringCloudAlibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电......
  • Hadoop HDFS NameNode核心原理分析
    胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,SpringCloudAlibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电......