[1.23] T3-回家

news/2024/11/29 8:38:13/

题目

题目大意

轨道交通网络由 2n 条地铁线路构成,组成了一个 n 纵 n 横的交通网。如下图所示,这 2n 条线路每条线路都包含 n 个车站,而每个车站都在一组纵横线路的交汇处。

并非每个车站都能够进行站内换乘,能够进行站内换乘的地铁站共有 m 个,在下图中,标上方块标记的车站为换乘车站。已知地铁运行 1 站需要 2 分钟,而站内换乘需要步行 1 分钟。

在不中途出站的前提下,从学校回家最快需要多少时间(等车时间忽略不计)。

在这里插入图片描述

题目解析

很明显是一个最短路,主要是在构图上需要解决

把换乘车站(包括起点和终点)的坐标分为2个点,一个点连纵坐标相同的点,另一个点连横坐标相同的点,距离为2点的距离,而同属一个坐标的两个点的距离为1(起点和终点为0)

在这样构图以后,跑一个最短路即可

代码

#include<bits/stdc++.h>
using namespace std;
struct A
{int x,y,id;
}a[200005];
struct V
{int s,i;
};
vector<V> dis[200005];
queue<int> q;
int n,m,f[200005];
bool flag[200005];
void add1(int x)
{V s;s.s=2*(a[x+1].y-a[x].y);s.i=a[x+1].id;dis[a[x].id].push_back(s);s.i=a[x].id;dis[a[x+1].id].push_back(s);
}
void add2(int x,int p)
{V s;s.s=2*(a[x+1].x-a[x].x);s.i=a[x+1].id+p;dis[a[x].id+p].push_back(s);s.i=a[x].id+p;dis[a[x+1].id+p].push_back(s);
}
bool cmp1(A a,A b)
{return a.x==b.x?a.y<b.y:a.x<b.x;
}
bool cmp2(A a,A b)
{return a.y==b.y?a.x<b.x:a.y<b.y;
}
int main()
{cin>>n>>m;for(int i=1;i<=m+2;i++){cin>>a[i].x>>a[i].y;a[i].id=i;a[i+m+2]=a[i];a[i+m+2].id=i+m+2;V s;if(i>m) s.s=0;else s.s=1;s.i=i+m+2;dis[i].push_back(s);s.i=i;dis[i+m+2].push_back(s);}sort(a+1,a+m+3,cmp1);for(int i=1;i<m+2;i++)if(a[i].x==a[i+1].x)add1(i);sort(a+1,a+m+3,cmp2);for(int i=1;i<m+2;i++)if(a[i].y==a[i+1].y)add2(i,m+2);q.push(m+1);memset(f,0x3f,sizeof(f));f[m+1]=0;while(!q.empty()){int id=q.front();q.pop();flag[id]=0;for(int i=0;i<dis[id].size();i++){if(f[id]+dis[id][i].s<f[dis[id][i].i]){f[dis[id][i].i]=f[id]+dis[id][i].s;if(!flag[dis[id][i].i]){q.push(dis[id][i].i);flag[dis[id][i].i]=1;	}}}}if(f[2*m+4]==f[0])cout<<-1;elsecout<<f[2*m+4];return 0;
}

http://www.ppmy.cn/news/112828.html

相关文章

太子妃升职记

ftp://ds:dsd2.dytt.com:30095/[迅雷下载www.xiamp4.com]太子妃升职记01.mp4 ftp://ds:dsd3.dytt.com:10180/[迅雷下载www.xiamp4.com]太子妃升职记02.mp4 ftp://ds:dsd3.dytt.com:10181/[迅雷下载www.xiamp4.com]太子妃升职记03.mp4 ftp://ds:dsd3.dytt.com:10182/[迅雷下载ww…

批处理实例——批量修改电视剧文件名称

今天整理硬盘的时候&#xff0c;发现去年下载的《芈月传》文件名称太长&#xff0c;很难看清楚哪个文件是第10集哪个是第11集&#xff0c;今天就顺便用批处理整理了一下。 文件列表如下 芈月传.Legend.of.Miyue.EP80.2015.WEB-DL.1080P.X264.AAC(ED2000.COM).mp4 M月传.Legend.…

05/07/03

一觉睡到下午2点&#xff0c;洗了点衣服&#xff0c;出去找了好半天才找到交电费的地方&#xff0c;银行自助交费&#xff0c;还是第一次接触&#xff0c;高新技术。 马彦要回家工作了。他在这边电信签了1年到期了&#xff0c;不继续签了&#xff0c;家里那边电信也联系好了。…

p3-m3

本阶段围绕当下国内最主流的前端核心框架 Vue.js 展开&#xff0c;深入框架内部&#xff0c;通过解读源码或者手写实现的方式&#xff0c;剖析 Vue.js 框架的内部实现原理&#xff0c;让你做到知其所以然。同时我们还会介绍 Vue.js 的进阶用法、周边生态以及性能优化&#xff0…

设计模式之创建型模式

1、单例模式&#xff08;Singleton Pattern&#xff09; Ensure a class only has one instance,and provide a global point of access to it. 保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 何时使用 当系统需要某个类只有一个实例的时候 优点 单例…

05#31

可是我都已经不爱了 夜深了 还在想你 我不能能够 就算你再次转身 我们已然擦身而过 可是 我的心里还是装着那个他 即使有人进有人出 我还是固执的保留着那个位置 你的专属 明天我就离开 离开这个有你记忆的地方 也许还会回来 但是我的心只为自己而忙碌 我希望我…

01-30

(1.1) MATLAB 与 Excel 的交互 (1.1.1) 在 Excel 中加载宏&#xff1a; (1) 在Excel中点击 文件-选项-加载项-转到-浏览-选中MATLAB&#xff08;安装目录&#xff09;/ toolbox / exlink。然后在Excel的 选项-自定义功能区-所有命令 中添加MATLAB图标的命令。 (1.1.2) 从 Exc…

EC35

35. 考虑virtual函数以外的其他选择 令客户通过public non-virtual成员函数间接调用private virtual函数。继承类可以重新定义继承而来的private virtual函数该条款主要介绍替代virtual函数的方法&#xff0c;主要有&#xff1a; 1&#xff09;用private virtual函数替代&…