L2-031 深入虎穴

原题在这里:

  概述题意:给定一个有向图,问从未知入口的最长路径末节点。

analyse:

  现在整明白题目了以后巨简单,但是我写的时候真看不明白题目啥意思“入口呢?”,人家确实是不给入口,自己判断。

于是我写出了这样的code:

复制代码
#include <bits/stdc++.h>
using namespace std;
#define Mx 2022
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define cn(s) cout << s << endl
typedef long long ll;
int main()
{
    IOS;
    // Solution s;
    int n;
    cin >> n;
    vector<vector<int>> mp(n + 1, vector<int>(0));
    vector<int> vis(n + 1);
    for (int i = 1; i <= n; ++i)
    {
        int x, y;
        cin >> x;
        while (x--)
        {
            cin >> y;
            mp[i].emplace_back(y);
        }
    }
    queue<int> q;
    q.push(1);
    int ans = 0;
    while (q.size())
    {
        int x = q.front();
        q.pop();
        if (vis[x])
            continue;
        ans = x;
        vis[x] = 1;
        // cout << x << "->num=" << mp[x].size() << endl;
        for (int i = 0; i < mp[x].size(); ++i)
        {
            int y = mp[x][i];
            if (!vis[y])
                q.push(y);
        }
    }
    cout << ans << endl;
    return 0;
}
从入口(节点1)的最长最短路径末端点
复制代码

属于是混了点分,但是真无语。

code:

复制代码
#include <bits/stdc++.h>
using namespace std;
#define Mx 202200
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define cn(s) cout << s << endl
typedef long long ll;
vector<vector<int>> mp;
vector<int> vis, flag;
int ans, mx = 1;
int dfs(int x, int y)
{
    if (y >= mx)
    {
        ans = x;
        mx = y;
    }
    for (int i = 0; i < mp[x].size(); ++i)
        dfs(mp[x][i], y + 1);
}
int main()
{
    IOS;
    // Solution s;
    int n;
    cin >> n;
    mp = vector<vector<int>>(n + 1, vector<int>(0));
    flag = vis = vector<int>(n + 1);
    for (int i = 1; i <= n; ++i)
    {
        int x, y;
        cin >> x;
        while (x--)
        {
            cin >> y;
            flag[y] = 1;
            mp[i].emplace_back(y);
        }
    }
    int in;
    for (int i = 1; i <= n; ++i)
        if (!flag[i])
            in = i;
    dfs(in, 1);
    cout << ans;
    return 0;
}
复制代码

 

【Over】

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