RC-u4 相对论大师(bfs求解指定路径)

2023-11-20

PTA | 程序设计类实验辅助教学平台

题解:

bfs可以求解从根节点到叶子节点的指定路径,这里的vis[]不是为了防止访问到父节点,更多的是为了缩小路径长度,mpp和mp的映射也很巧妙,开始我用的还是map<pair<string,string,int>,差点没麻烦死

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
bool vis[N];//虽然是有向图,但是必要
int n,idx;
vector<int>p[N];
map<string,int>mp;
map<int,string>mpp;
int pre[N];//记录路径
vector<int>bfs(int s,int e)
{
    pre[e]=-1;
    queue<int>q;
    q.push(s);
    memset(vis,0,sizeof vis);
    vis[s]=1;
    while(q.size())
    {
        int x=q.front();
        if(x==e)break;
        q.pop();
        for(int i=0;i<p[x].size();i++)
        {
            if(vis[p[x][i]])continue;
            vis[p[x][i]]=1;
            q.push(p[x][i]);
            pre[p[x][i]]=x;
        }
    }
    vector<int>t;
    if(pre[e]==-1)return t;
    while(e!=s)
    {
        t.push_back(e);
        e=pre[e];
    }
    t.push_back(s);
    reverse(t.begin(),t.end());
    return t;
}
int main()
{
    cin>>n;
    for(int i=0;i<n;i++)
    {
        string s1,s2,id1,id2;
        cin>>s1>>id1>>s2>>id2;
        if(mp.count(s1+" 0")==0)
        {
            mpp[idx]=s1+" 0";
            mp[s1+" 0"]=idx++;
            mpp[idx]=s1+" 1";
            mp[s1+" 1"]=idx++;
        }
        if(mp.count(s2+" 0")==0)
        {
            mpp[idx]=s2+" 0";
            mp[s2+" 0"]=idx++;
            mpp[idx]=s2+" 1";
            mp[s2+" 1"]=idx++;
        }
        s1+=" "+id1;
        s2+=" "+id2;
        p[mp[s1]].push_back(mp[s2]);
    }
    vector<int>ans(2020)//定义了一个容量为2020的vector,且里面每个值为0;
    for(int i=0;i<idx;i+=2)
    {
        vector<int>s1=bfs(i,i+1);
        vector<int>s2=bfs(i+1,i);
        if(ans.size()>s1.size()&&s1.size()>0)
        {
            ans=s1;
        }
        if(ans.size()>s2.size()&&s2.size()>0)
        {
            ans=s2;
        }
    }
    for(int i=0;i<ans.size()-1;i++)
        cout<<mpp[ans[i]]<<" "<<mpp[ans[i+1]]<<" ";
    cout<<"= ";
    cout<<mpp[ans[0]]<<" "<<mpp[ans[ans.size()-1]];
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RC-u4 相对论大师(bfs求解指定路径) 的相关文章

  • 如何做单元测试

    如何做单元测试 一 定义 二 为什么要做单元测试 三 单元测试用例 四 阿里单元测试规约 五 测试框架的使用 Junit 下面以Junit4 为例来介绍 1 1 什么是Junit 1 2 为何使用Junit 1 3 Junit的快速入门 导

随机推荐

  • 学习笔记——SVG.js中形状元素的创建及其相关方法

    CreateElement 1 创建svg元素 在svg js中 每个元素都是一个对象 可以通过构造它来创建 import Rect from svgdotjs svg js var rect new Rect size 100 100 a
  • Unity3d中脚本无法编译问题(Monodevelop)

    使用Monodevelop打开脚本 编译时报错 具体错误忘记了 原因是 net框架引起 升级到 net框架4 5后解决
  • centos 7安装BBR加速报错:sysctl: setting key “net.ipv4.tcp_congestion_control“: 没有那个文件或目录的修复方法

    uname r 查看一下内核是什么版本 这个报错无非就是你内核不是4 9以上 从以下链接进去重启系统更新超过4 9内核就好 我升级后是5 14 成功运行 CentOS 7 启动 BBR 教程
  • 主成分分析R语言实现

    主成分分析是一种常见的降维统计方法 它通过适当的变量替换 使得新变量成为原变量的线性组合 并且新变量间彼此独立 从而可从错综复杂的关系中寻求主要成分信息 揭示变量内在关系 本次主要分享的是该方法的R语言实现 目录 数据集展示 一 计算相关系
  • win10安装mujoco150 , mujoco_py1.50.1.68 , gym

    win10安装mujoco mujoco py gym 本文介绍的是在Win10系统下安装gym mujoco150 mujoco py1 50 1 68的具体流程 另外一篇是安装mujoco200和mujoco py2 0 2 9版本 方
  • 爬虫超简化详细流程

    第一章 爬取网页源代码 一 导入模块 使用pip命令模块在电脑终端 下载基础爬取所用模块 requests import requests 二 放置网址 单引号中放置网址 url 三 设置请求头 headers Accept 辨识内容为全部
  • am335x+wm8960音频基于linux 4.9.41移植

    1 配置内核驱动 gt Device Drivers gt Sound card support SOUND y
  • IMX6学习记录(7)-编译脚本

    上面是我的微信和QQ群 欢迎新朋友的加入 1 效果 这几天搞这个东西 会有一大堆的命令行操作 很多重复的内容 现在做一个简单的脚本 方便自己平时的开发工作 2 脚本内容 bin bash uboot编译 function mk uboot
  • Django form组件

    form组件博客整理一 背景 我们之前在HTML页面中利用form表单向后端提交数据时 都会写一些获取用户输入的标签并且用form标签把它们包起来 与此同时我们在好多场景下都需要对用户的输入做校验 比如校验用户是否输入 输入的长度和格式等正
  • IDEA找不到程序包 和 request.getServletContext()报错Cannot resolve method ‘getServletContext()的解决方法

    重新装了idea和down了项目却一直报错 在调用request getServletContext 的方法时一直报Cannot resolve method getServletContext 的错误 网上查了好多方法 大多数都是在说是s
  • ModuleNotFoundError: No module named ‘tensorflow.contrib‘

    代码错误 Traceback most recent call last File D PyCharm PythonProject DRL Networking master DRL Networking master IPDPS2020
  • Android4.0 SDK功能详解

    我在eoe的论坛找到的 就复制过来了 跟大家分享一下 Android 4 0 平台API等级 14 Android 4 0 是一次重要的平台发布版 为用户和应用程序开发者增加了大量的新特性 在下面我们将讨论的所有新特性和API中 因为它将
  • 【C++】C++11语法之右值引用

    文章目录 一 的扩展 initializer list的讲解 二 C 11一些小的更新 decltype nullptr 范围for 新容器 三 右值引用 右值真正的用法 完美转发 默认成员函数 总结 一 的扩展 在原先c 的基础上 C 1
  • 操作系统:进程学习笔记

    前言 程序顺序执行的三大特性 1 顺序性 指处理机严格按照程序所规定的的顺序执行 2 封闭性 指程序在封闭的环境运行即程序运行时独占全机资源 资源状态只能有本程序才能够改变它 程序一旦执行 其运行结果不受外界影响 3 可再现性 指只要程序执
  • 编写Shell脚本(批处理,一次执行多条命令)

    Bash终端的优势 1 上下键重复执行命令 2 tab键自动补齐 3 提供有用的环境变量 4 批处理 shell脚本文件建议以 sh为后缀 其实vim创建文本文件时 对名字无要求 但最好规定格式 echo SHELL 输出为 bin bas
  • grep的用法

    命令介绍 Linux系统中grep命令是一种强大的文本搜索工具 它能使用正则表达式搜索文本 并把匹配的行打印出来 匹配到的标红grep全称是Global Regular Expression Print 表示全局正则表达式版本 它的使用权限
  • khv是什么虚拟服务器,服务器虚拟化vSphere4 vs Hyper-V R2,选择谁?

    目前在X86服务器平台上做虚拟化 是非常热的 目前主要有两个选择 VMWare的vSphere4和微软的Hyper V R2 VMWare非常成熟 企业级用户很多 但价格不便宜 按照CPU数量和版本收费 Hyper V R2很便宜 但出来的
  • 检查内存泄露

    自己编写的视频处理程序出现了一个问题 每帧的运行时间随着运行时间在不断增长 很大可能是出现了内存泄露 于是学习了一些查看内存泄露的方法 做了两种尝试 一是VS自带的DEBUG下的检测 view pl html view plain copy
  • Windows上让Qt5 QCamera响应UVC摄像头硬件按钮拍图

    QCamera相机类提供了一些基本的功能 包括拍照和录制功能 Windows上不支持录制视频 但也有很多接口是没有封装的 比如有些UVC摄像头有物理按键 可以进行拍图等操作 但是QCamera没法响应硬件按钮的拍图操作 网络上的相关代码都是
  • RC-u4 相对论大师(bfs求解指定路径)

    PTA 程序设计类实验辅助教学平台 题解 bfs可以求解从根节点到叶子节点的指定路径 这里的vis 不是为了防止访问到父节点 更多的是为了缩小路径长度 mpp和mp的映射也很巧妙 开始我用的还是map