栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

851. 喧闹和富有

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

851. 喧闹和富有

 

 

链接:

iota - C++ Reference

题解:

力扣

 

 

 

class Solution {
public:
    vector loudAndRich(vector>& richer, vector& quiet) {
        std::vector indegree(quiet.size(), 0);
        std::unordered_map> graph;
        for (auto& edge : richer) {
            // 金钱高指向金钱低的
            graph[edge[0]].insert(edge[1]);
            ++indegree[edge[1]];
        }
        std::vector result(quiet.size(), 0);
        // 初始化结果集合为自己
        iota(std::begin(result), std::end(result), 0);
        std::queue que;
        for (int i = 0; i < quiet.size(); ++i) {
            if (indegree[i] == 0) {
                que.push(i);
            }
        }
        while (!que.empty()) {
            auto f = que.front();
            que.pop();
            for (auto neighbord : graph[f]) {
                // 判读自己的邻居,是否可以更新邻居的结果集合
                if (quiet[result[f]] < quiet[result[neighbord]]) {
                    result[neighbord] = result[f];
                }
                if (--indegree[neighbord] == 0) {
                    que.push(neighbord);
                }
            }
        }
        return result;
    }
};

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665935.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号