链式前向星复习

很久没写图论的题了,生疏了,c++式建图都不会了(丑陋)

水题在这里:

概述题意:

  给一个无向图,从原点开始求最长的路径长度(再稍处理一下)

其实主要是记录一下c++式的建图(没写过)

定义:

 

复制代码
int num;
    struct ii
    {
        int to, next;
        ii(int x, int y) : to(x), next(y) {}
    };
    vector<int> head;
    vector<ii> mp;
    void add(int x, int y)
    {
        mp.emplace_back(y, head[x]);
        head[x] = ++num;
    }
复制代码

 

初始化:

 

        vector<int> ans(n, 0);
        head = ans, num = 0;
        mp.emplace_back(0, 0);     

 

切记有一个mp.emplace_back()的预处理,因为一定是要下标从1开始

ACcode:

 

复制代码
class Solution
{
    int num;
    struct ii
    {
        int to, next;
        ii(int x, int y) : to(x), next(y) {}
    };
    vector<int> head;
    vector<ii> mp;
    void add(int x, int y)
    {
        mp.emplace_back(y, head[x]);
        head[x] = ++num;
    }

public:
    int networkBecomesIdle(vector<vector<int>> &edges, vector<int> &patience)
    {
        int n = patience.size(), mx = 0;
        vector<int> ans(n, 0);
        head = ans, num = 0;
        mp.emplace_back(0, 0);

        for (auto i : edges)
            add(i[0], i[1]), add(i[1], i[0]);

        queue<pair<int, int>> q;
        q.push({0, 0});
        while (q.size())
        {
            int u = q.front().first, v = q.front().second;
            q.pop();
            for (int i = head[u]; i; i = mp[i].next)
            {
                int y = mp[i].to;
                if (y == 0)
                    continue;
                if (ans[y] == 0)
                {
                    ans[y] = v + 1;
                    q.push({y, v + 1});
                }
            }
        }
        for (int i = 1; i < n; ++i)
            mx = max(mx, 2 * 2 * ans[i] - (2 * ans[i] % patience[i] ? 2 * ans[i] % patience[i] : patience[i]));
        return mx + 1;
    }
};
ac
复制代码

 

 

  

posted @   Renhr  阅读(20)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示