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

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


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

代码如下:

cpp 复制代码
//参考链接:https://leetcode.cn/problems/count-pairs-of-connectable-servers-in-a-weighted-tree-network/solutions/2664330/mei-ju-gen-dfs-cheng-fa-yuan-li-pythonja-ivw5
class Solution 
{
public:
    vector<int> countPairsOfConnectableServers(vector<vector<int>>& edges, int signalSpeed) 
    {
        int n=edges.size()+1;
        vector<vector<pair<int,int>>> g(n);
        for(const auto& edge:edges)//建图
        {
            g[edge[0]].push_back({edge[1],edge[2]});
            g[edge[1]].push_back({edge[0],edge[2]});
        }

        function<int(int,int,int)> dfs=[&](int x,int fa,int sum)->int
        {
            int count=sum%signalSpeed==0;
            for(auto&[y,weight]:g[x])
            {
                if(y!=fa)
                {
                    count+=dfs(y,x,sum+weight);
                }
            }
            return count;
        };

        vector<int> res(n);
        for(int i=0;i<n;i++)
        {
            int sum=0;
            for(const auto&[y,weight]:g[i])
            {
                int count=dfs(y,i,weight);
                res[i]+=count*sum;
                sum+=count;
            }
        }
        return res;
    }
};
相关推荐
炘爚3 分钟前
C++(四大设计模式——单例/工厂/抽象工厂/代理)
c++
迷途之人不知返3 分钟前
string(2)
c++
tankeven4 分钟前
HJ162 ACM中的AC题
c++·算法
nianniannnn38 分钟前
力扣 76. 最小覆盖子串
c++·算法·leetcode
灰色小旋风42 分钟前
力扣K个一组翻转链表C++
c++·算法·leetcode
manyikaimen1 小时前
博派智能-运动控制技术-RTCP-五轴联动
c++·图像处理·qt·算法·计算机视觉·机器人·c#
Darkwanderor1 小时前
搜索优化——启发式搜索和A*算法
c++·算法·启发式搜索·a星搜索
耶叶1 小时前
BIT-TPS:关于实验4数学库完善与设计重构的详细解读
c++·bit·旋风
承渊政道1 小时前
【优选算法】(实战突破字符串:经典题型与解题模板)
c语言·数据结构·c++·笔记·学习·算法·容器
Hello eveybody1 小时前
图论简述+图论考试要点(C++)
c++·深度优先·图论