7-56 周游世界 (30分)

L3-014 周游世界 (30 分) Dijkstra+堆优化+链式前向星 周游世界是件浪漫事,但规划旅行路线就不一定了…… 全世界有成千上万条航线、铁路线、大巴线,令人眼花缭乱。所以旅行社会选择部分运输公司组成联盟,每家公司提供一条线路,然后帮助客户规划由联盟内企业支持的旅行路线。本题就要求你帮旅行社实现一个自动规划路线的程序,使得对任何给定的起点和终点,可以找出最顺畅的路线。所谓“最顺畅”,首先是指中途经停站最少;如果经停站一样多,则取需要换乘线路次数最少的路线。 输... 阅读详情

周游世界是件浪漫事,但规划旅行路线就不一定了…… 全世界有成千上万条航线、铁路线、大巴线,令人眼花缭乱。所以旅行社会选择部分运输公司组成联盟,每家公司提供一条线路,然后帮助客户规划由联盟内企业支持的旅行路线。本题就要求你帮旅行社实现一个自动规划路线的程序,使得对任何给定的起点和终点,可以找出最顺畅的路线。所谓“最顺畅”,首先是指中途经停站最少;如果经停站一样多,则取需要换乘线路次数最少的路线。

输入格式:

输入在第一行给出一个正整数N(≤100),即联盟公司的数量。接下来有N行,第i行(i=1,⋯,N)描述了第i家公司所提供的线路。格式为:
M S[1] S[2] ⋯ S[M]
其中M(≤100)是经停站的数量,S[i](i=1,⋯,M)是经停站的编号(由4位0-9的数字组成)。这里假设每条线路都是简单的一条可以双向运行的链路,并且输入保证是按照正确的经停顺序给出的 —— 也就是说,任意一对相邻的S[i]和S[i+1](i=1,⋯,M−1)之间都不存在其他经停站点。我们称相邻站点之间的线路为一个运营区间,每个运营区间只承包给一家公司。环线是有可能存在的,但不会不经停任何中间站点就从出发地回到出发地。当然,不同公司的线路是可能在某些站点有交叉的,这些站点就是客户的换乘点,我们假设任意换乘点涉及的不同公司的线路都不超过5条。
在描述了联盟线路之后,题目将给出一个正整数K(≤10),随后K行,每行给出一位客户的需求,即始发地的编号和目的地的编号,中间以一空格分隔。

输出格式:

处理每一位客户的需求。如果没有现成的线路可以使其到达目的地,就在一行中输出“Sorry, no line is available.”;如果目的地可达,则首先在一行中输出最顺畅路线的经停站数量(始发地和目的地不包括在内),然后按下列格式给出旅行路线:
Go by the line of company #X1 from S1 to S2.
Go by the line of company #X2 from S2 to S3.
…
其中Xi是线路承包公司的编号,Si是经停站的编号。但必须只输出始发地、换乘点和目的地,不能输出中间的经停站。题目保证满足要求的路线是唯一的。

输入样例:

4
7 1001 3212 1003 1204 1005 1306 7797
9 9988 2333 1204 2006 2005 2004 2003 2302 2001
13 3011 3812 3013 3001 1306 3003 2333 3066 3212 3008 2302 3010 3011
4 6666 8432 4011 1306
4
3011 3013
6666 2001
2004 3001
2222 6666

输出样例:

2
Go by the line of company #3 from 3011 to 3013.
10
Go by the line of company #4 from 6666 to 1306.
Go by the line of company #3 from 1306 to 2302.
Go by the line of company #2 from 2302 to 2001.
6
Go by the line of company #2 from 2004 to 1204.
Go by the line of company #1 from 1204 to 1306.
Go by the line of company #3 from 1306 to 3001.
Sorry, no line is available.

参考大佬的写的

思路:先用结构体储存当前公司的下一个经停站编号和当前公司编号,双向储存(用vector把这些结构体串成无向图)
然后对每一对数据dfs就好了,注意因为可能会构成环形回路,所以要把第一个标记,并且dfs下一个前把当前的点标记,dfs后把当前点标记取消,因为路可能会交叉,要换乘。
注意dfs里的代码,如果要换乘的话,就要记录当前的点和当前的公司编号,还是用vector,但是和标记一样,要记得回溯。
这个代码是放入换乘前的点,所以最后要加入终点。

#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
#define N 10010
#define INF 0x3f3f3f
int n,m,a,b;
int stop,comnum;
int p[N];
typedef struct road List;
struct road{
    int next,company;
};
vector<road>vec[N];
vector<int>t1,t2,hcl,hce;
void dfs(int h,int s,int c,int n);
int main()
{
    cin>>n;
    int t,temp,T;
    for(int i=1;i<=n;i++){
        cin>>t>>temp;
        t--;
        for(int j=0;j<t;j++){
            cin>>T;
            List t2;
            t2.company=i;
            t2.next=T;
            vec[temp].push_back(t2);
            t2.next=temp;
            vec[T].push_back(t2);
            temp=T;
        }
    }
    cin>>t;
    while(t--){
        cin>>a>>b;
        memset(p,0,sizeof(p));
        p[a]=1;
        stop=INF;
        comnum=INF;
        t1.clear(),t2.clear(),hce.clear(),hcl.clear();
        dfs(a,0,0,0);
        if(stop==INF)
            cout<<"Sorry, no line is available."<<endl;
        else{
            cout<<stop<<endl;
            hcl.push_back(b);
            for(int i=0;i<comnum;i++){
                printf("Go by the line of company #%d from %04d to %04d.\n",hce[i],hcl[i],hcl[i+1]);
            }
        }
    }
    return 0;
}

void dfs(int h,int s,int c,int n){
    if(h==b){
        if(s<stop||(s==stop&&c<comnum)){
            stop=s;
            comnum=c;
            hce=t1;
            hcl=t2;
        }
        return ;
    }
    for(int i=0;i<vec[h].size();i++){
        if(p[vec[h][i].next]) continue;
        p[vec[h][i].next]=1;
        if(n==vec[h][i].company)
            dfs(vec[h][i].next,s+1,c,n);
        else{
            t1.push_back(vec[h][i].company);
            t2.push_back(h);
            dfs(vec[h][i].next,s+1,c+1,vec[h][i].company);
            t1.pop_back();
            t2.pop_back();
        }
        p[vec[h][i].next]=0;
    }
}

大佬原链接

R语言dlnm包避坑指南:手把手教你配置交叉基矩阵(附温度分层与滞后多项式设置) 本文详细介绍了R语言dlnm包在配置交叉基矩阵时的实用技巧与避坑指南,特别针对温度分层与滞后多项式设置提供了具体参数配置建议。通过解析`crossbasis()`函数的核心参数、温度分析的分层策略以及不同基函数的适用场景,帮助研究者高效构建分布滞后非线性模型,避免常见错误并优化模型性能。 阅读详情

相关推荐

ComfyUI新手必看:JoyCaption 2插件安装全流程(附百度网盘资源)

本文为ComfyUI新手提供了JoyCaption 2插件的完整安装与部署指南。详细介绍了从环境准备、插件获取、模型文件配置到核心节点使用的全流程,并重点解析了其集成的LLM反推模式,帮助用户高效实现从图片到精准提示词的转换。

mango的博客 303

L3-014 周游世界 (30 分)

L3-014周游世界(30分) 周游世界是件浪漫事,但规划旅行路线就不一定了…… 全世界有成千上万条航线、铁路线、大巴线,令人眼花缭乱。所以旅行社会选择部分运输公司组成联盟,每家公司提供一条线路,然后帮助客户规划由联盟内企业支持的旅行路线。本题就要求你帮旅行社实现一个自动规划路线的程序,使得对任何给定的起点和终点,可以找出最顺畅的路线。所谓“最顺畅”,首先是指中途经停站最少;如果经停站一样...

daixinliangwyx的博客 2286

SAP CO模块实战:成本中心会计分割结构配置全流程(OKES事务码详解)

本文详细解析了SAP CO模块中成本中心会计分割结构的配置全流程,重点讲解了OKES事务码的实战操作。内容涵盖分割结构的概念理解、配置前的次级成本要素与作业类型主数据准备,并通过步骤拆解演示了如何定义分割结构、规则与版本,以及如何将配置关联到成本中心并执行分割。最后提供了常见问题排查与优化建议,旨在帮助顾问及财务人员掌握成本精确分摊的关键配置,确保期末成本核算的准确性。

embedding5hiker的博客 805

团体天梯 L3-014 周游世界 (30 分)(STL)

L3-014周游世界(30 分) 周游世界是件浪漫事,但规划旅行路线就不一定了…… 全世界有成千上万条航线、铁路线、大巴线,令人眼花缭乱。所以旅行社会选择部分运输公司组成联盟,每家公司提供一条线路,然后帮助客户规划由联盟内企业支持的旅行路线。本题就要求你帮旅行社实现一个自动规划路线的程序,使得对任何给定的起点和终点,可以找出最顺畅的路线。所谓“最顺畅”,首先是指中途经停站最少;如果经停站一样...

ItaLink 1659

⑨【从0制作自己的ros导航小车:上位机篇】04、使用gmapping建图

前面的文章已经能够实现在odom坐标系下显示小车模型和里程计数据了,本文加上激光slam必不可少的传感器雷达,先进行测试,然后直接开始建图!

海风的博客 2916

stc8g1k08硬件iic读取aht20温湿度及0.91寸oled显示

使用stc8g1k08读取aht20温湿度及0.91寸oled显示。

qq_61688416的博客 2772

CCCC-GPLT L3-014. 周游世界 团体程序设计天梯赛

周游世界是件浪漫事,但规划旅行路线就不一定了…… 全世界有成千上万条航线、铁路线、大巴线,令人眼花缭乱。所以旅行社会选择部分运输公司组成联盟,每家公司提供一条线路,然后帮助客户规划由联盟内企业支持的旅行路线。本题就要求你帮旅行社实现一个自动规划路线的程序,使得对任何给定的起点和终点,可以找出最顺畅的路线。所谓“最顺畅”,首先是指中途经停站最少;如果经停站一样多,则取需要换乘线路次数最少的路线。 ...

柳婼 の blog 2051

避坑指南:Qwen2.5-VL图片预处理中常见的5个尺寸错误

本文深入解析了Qwen2.5-VL模型在图片预处理环节中开发者最常遇到的五个尺寸错误,包括动态分辨率对齐、宽高比超标、像素数限制等问题。文章结合源码解读,详细剖析了`process_vision_info`函数和`resize`逻辑,并提供了具体的排查流程图与参数设置建议,旨在帮助开发者构建健壮的预处理流水线,有效规避显存溢出与推理失败的风险。

weixin_29290379的博客 178

7-14 周游世界 周游世界是件浪漫事,但规划旅行路线就不一定了…… 全世界有成千上万条航线、铁路线、大巴线,令人眼花缭乱。所以旅行社会选择部分运输公司组成联盟,每家公司提供一条线路,然后帮助客户规划

#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; //Constant area const int MAXN=1000000; const int MIN_INF=0x80000000; const int MAX_INF=0x7fffffff; //Variable area int n,te,m,st,ed,e; //链式前向星起手4数组 i.

流楚丶格念的博客 6158

CMAC算法原理

2、K1 通过以下运算导出:若 L 的最高有效位等于 0,则 K1 是 L 的左移 1 位。3、K2 通过如下运算导出:若 K1 的最高有效位等于 0,则 K2 是 K1 的左移 1 位。采用了 AES 算法中的类似 CBC 模式的加密方式,即对前一个分组的密文与当前分组的明文进行异或操作后在加密,2、分块处理:首先将消息分成多个固定长度的块,若消息长度不是块大小的倍数,则可以使用填充来将其填充到合适的大小。1、子密钥计算,通过主密钥生成子密钥(key1,key2),子密钥用于最后一个块处理;

sky的博客 1659

【U-Net 数据集制作】如何制作自己的图像分割数据集?(标注与格式转换),图像分割数据集制作与转换神器

在前面的课程中,我们像搭积木一样手写了 U-Net 的网络架构。很多同学迫不及待地想把自己的图片喂进网络开始“炼丹”。但是,深度学习界有一句名言:“数据决定了模型的上限,而网络结构只是在逼近这个上限。用标注工具标出来的是 JSON 文件,怎么变成 U-Net 需要的黑白掩码(Mask)图?为什么我的 Mask 肉眼看是黑白的,一放进 PyTorch 训练就报?如何快速按 8:2 的比例把几千张图片和标签划分成训练集和验证集?

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 195

L3-007 天梯地图 (最短路)

本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线;一条是最短距离的路线。题目保证对任意的查询请求,地图上都至少存在一条可达路线。 输入格式: 输入在第一行给出两个正整数N(2≤N≤500)和M,分别为地图中所有标记地点的个数和连接地点的道路条数。随后M行,每行按如下格式给出一条道路的信息: V1 V2 one-wa...

whisperlzw的博客 251

杰理JL701N内置flash录音配置教程

本文详细介绍了内置Flash录音功能的配置方法。主要内容包括:1) 基础模式配置(开启音乐/录音模式、Flash录音宏定义);2) 录音参数设置(格式基准值、存储区域定义、容量配置);3) MP3编码特殊处理;4) 下载时的Flash格式化操作;5) 录音开关和播放接口的使用说明。配置过程涉及多个关键文件的修改,并强调存储容量的精确分配。

qq_42014563的博客 598

每日学习记录(2月15日~3月10日)

1.BSGS总结:BSGS模版。

Howardllhy的博客 231

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 解析本地txt文本,arrays

大家好,我是萌兹,今天是周一(9月11日),开启奋斗模式~ 前几天看到一则新闻: 比利时《老人》杂志曾在全国的60岁老人中展开了一项调查,“你最后悔什么”,引发了一次集体对人生的思考。比利时调查结果:       1.72%的老人后悔年轻时努力不够,以至事业无成.   2. 67%的老人后悔选错了职业.   3. 63%的老人后悔对子女教育不够或方法不当.   4.

xiaomengzi的博客 800

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

PAT-GPLT L3-017 森森快递(贪心 + 线段树)

链接: https://www.patest.cn/contests/gplt/L3-017 题意: 给出直线上的N个顶点,(N-1)条边的限制值(每对相邻的顶点之间都有一条边),以及Q个区间(给出起始顶点编号以及终止顶点编号)。每个区间都可以为该区间的所有边加上一个附加值,所有区间在某条边上所累加的附加值不能超过这条边的限制值。问:所有区间的附加值总和最大是多少? 分析: ...

weixin_30273763的博客 426

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【算法专题】平面点对距离问题

平面点对距离问题 1. 概述 平面上给定若干个点,让我们求解距离最远的两个点的距离,或者求解距离最近的两个点的距离,或者求解距离第k远的两个点的距离。 朴素做法是算出任意两个点的距离,找到距离最大值或者距离最小值,或者距离第k大的值(可以借助快排),这样做的时间复杂度都是O(n2)O(n^2)O(n2)的,实际上这三类问题都存在 O(n×log(n))O(n \times log(n))O(n×log(n)) 的做法。 (1)求距离最小值:AcWing 119. 袭击; (2)求距离最大值:

weixin_42638946的博客 2215

哈密顿绕行世界问题

一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。  Input前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行以后每行有1个数m,m=1.m=0退出.  Output输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.每行首先输出是第几条路线.然后

Ninaye的博客 341

瀑布汗,一句邪恶的话描述儿时卡通片

01.不良少年为追妹,勇闯体坛————灌篮高手 02.一骚娘们整容三次均失败,最后被乱棍打死————三打白骨精 03.法网恢恢,警方千里缉拿残障逃犯——黑猫警长 04.无耻幼童整日胡言乱语,终日猥亵年长女性为乐————蜡笔小新 05.七尺男惨遭毒手变侏儒 痴情女真情不变仍同居——名侦探柯南 06.销魂!白衣女子玩弄五男生一生! ——圣斗士星矢 07.哥俩一起参军,一个陆军一个空军————舒克贝塔

淡淡啲菋噵 1504

哈密顿绕行世界问题(HDU - 2181)

一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 Input 前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行以后每行有1个数m,m<=20,m>=1.m=0退出. Output 输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.每行首先输出是第几条...

Spidy_harker的博客 384

专题训练二 搜索进阶 HDU - 2181 哈密顿绕行世界问题 (DFS 回溯法)

HDU - 2181 哈密顿绕行世界问题 (DFS 回溯法) Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 Input 前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行以后每行有1个数m,m<=20,m>=1.m=0退出. Output 输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.每行首先输出是第几条路线.然后

weixin_43538217的博客 206

HDU2181 哈密顿绕行世界问题

解题思路:哈密顿环游世界问题。一道简单的题目,用回溯。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn = 24; 6 int vis[maxn], mapp[maxn][max...

weixin_30326515的博客 454

C - 哈密顿绕行世界问题

一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 Input 前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行以后每行有1个数m,m<=20,m>=1.m=0退出. Output 输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.每...

小糊涂的博客 301

HDU - 2181----哈密顿绕行世界问题

一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 Input 前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行以后每行有1个数m,m<=20,m>=1.m=0退出. Output 输出从第m个城市出发经过每个城市1次又回到m的所有路线,如有多条路线,按字典序输出,每行1条路线.每行首先输出是第几条路线.然后个

莫天 597

PTA 5-14 周游世界 (2017cccc初赛L3-2)

5-14 周游世界   (30分) 周游世界是件浪漫事,但规划旅行路线就不一定了…… 全世界有成千上万条航线、铁路线、大巴线,令人眼花缭乱。所以旅行社会选择部分运输公司组成联盟,每家公司提供一条线路,然后帮助客户规划由联盟内企业支持的旅行路线。本题就要求你帮旅行社实现一个自动规划路线的程序,使得对任何给定的起点和终点,可以找出最顺畅的路线。所谓“最顺畅”,首先是指中途经停站最少;如果

长路漫漫 唯剑作伴 3160
上一篇: 01背包问题
下一篇: 拯救007(升级版) (30分)
Fooooooo
博客等级 码龄7年 15粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值