题目大意:有一个导航系统,会根据你当前的位置,规划到目的地的最短路线,给你一个有向图,和一条行驶路径,问你导航重新规划路径的最大次数和最小次数。

读题的时候题意特别不理解,何为最大次数,何为最小次数?

1 比如说当在一个点时,到终点的最短路线就那一个,也就说我只能走这一条,不用重新规划。

2 在一个点到终点的最短路径有多个,并且你下次要走的正好的其中的一个,这个时候,可以重新规划,也可以不重新规划。

3 在一个点到终点最短的路径中,你下次要走的点不是其中的一个,这个时候必须重新规划。

(有点绕,但是,,他就这么个意思)

思路:首先我们应该知道每个点到终点的最短距离,所以---反向图跑最短路

然后当在正向图中:

      对路径中的某个点x,如果下次要走的点是与x相邻的点中最短的,并且唯一,那么不用重新规划。

                如果不唯一:可以重新规划,也可以不重新规划,所以maxx++.

                如果下次要走的点不是与x相邻的点中最短的 ,必须重新规划。maxx++,minn++;

#include<bits/stdc++.h>
using namespace std;
const int N=2E5+;
const int INF=1e9+;
int p[N];
int dis[N];
bool mark[N];
struct node{
int x,y;
bool friend operator<(const node x1,const node y1){
return x1.y>y1.y;
}
};
vector<node>mp1[N],mp2[N];
void djstrea(int s){
memset(mark,,sizeof(mark));
memset(dis,INF,sizeof(dis));
priority_queue<node>que;
dis[s]=;
que.push({s,});
while(que.size()){
node xx=que.top();
que.pop();
if(mark[xx.x]==) continue ;
mark[xx.x]=;
for(int i=;i<mp1[xx.x].size();i++){
int dx=mp1[xx.x][i].x;
int dy=mp1[xx.x][i].y;
if(mark[dx]==&&dis[dx]>dis[xx.x]+dy){
dis[dx]=dis[xx.x]+dy;
que.push({dx,dis[dx]});
}
}
}
}
int main(){
int n,m;
cin>>n>>m;
for(int i=;i<=m;i++){
int x,y;
cin>>x>>y;
mp1[y].push_back({x,});
mp2[x].push_back({y,});
}
int k;
cin>>k;
for(int i=;i<=k;i++) cin>>p[i];
for(int i=;i<=n;i++) dis[i]=INF;
djstrea(p[k]);
int minn=,maxx=;
for(int i=;i<k;i++){
int c=dis[p[i+]];
int cnt1=,cnt2=;
int x1=p[i];
for(int j=;j<mp2[x1].size();j++){
if(dis[mp2[x1][j].x]==c) cnt1++;
if(dis[mp2[x1][j].x]<c) cnt2++;
}
if(cnt2!=){
minn++;
maxx++;
}
else if (cnt1>) maxx++;
}
cout<<minn<<" "<<maxx<<endl;
return ;
}

O - Navigation System CodeForces - 1321D的更多相关文章

  1. Codeforces 1321D Navigation System

    题意 有个人要从\(s\)走到\(t\),经过的路径给定.导航系统每次会显示当前节点到\(t\)的最短路,有多条就显示其中之一.这个人如果按照导航走,那么啥都没变.如果没有按导航走导航就会重新导航.问 ...

  2. Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) D. Navigation System(有向图,BFS,最短路)

    题意: n 点 m 边有向图,给出行走路径,求行走途中到路径终点最短路变化次数的最小值和最大值 . 思路 : 逆向广搜,正向模拟. #include <bits/stdc++.h> usi ...

  3. Sherpa | Complete Navigation System 介绍与教材

    这里的夏尔巴人在iPad上使用的一种新的视频. 正如其名称所暗示的,夏尔巴人是所有您的导航需求的整体解决方案. 夏尔巴人带来了每个接口的三个主要的导航元素结合在一起 - 导航栏,侧边栏和页脚粘. 每一 ...

  4. Bus Video System CodeForces - 978E (思维)

    The busses in Berland are equipped with a video surveillance system. The system records information ...

  5. Error Correct System CodeForces - 527B

    Ford Prefect got a job as a web developer for a small company that makes towels. His current work ta ...

  6. B. Navigation System【CF 1320】

    传送门 题目:简单理解就是,我们需要开车从s点到t点.车上有一个导航,如果当前点为x,则导航会自动为你提供一条从x到t的最短的路线(如果有多条,则随机选一条),每走到下一个点则会实时更新最短路线,当然 ...

  7. Codeforces Round #625 (Div. 2)

    Contest Info Practice Link Solved A B C D E F 4/6 O O Ø  Ø     O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Sol ...

  8. 1034 - Navigation

    Global Positioning System (GPS) is a navigation system based on a set of satellites orbiting approxi ...

  9. Roomblock: a Platform for Learning ROS Navigation With Roomba, Raspberry Pi and RPLIDAR(转)

      What is this? "Roomblock" is a robot platform consists of a Roomba, a Raspberry Pi 2, a ...

随机推荐

  1. 北邮OJ 89. 统计时间间隔 java版

    89. 统计时间间隔 时间限制 1000 ms 内存限制 65536 KB 题目描述 给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间.给出的时间一定满足的形式,其中x和y分别 ...

  2. 完整说明使用SpringBoot+js实现滑动图片验证

    常见的网站验证方式有手机短信验证,图片字符验证,滑块验证,滑块图片验证.本文主要讲解的是滑块图片验证的实现流程.包括后台和前端的实现. 实现效果 使用的API java.awt.image.Buffe ...

  3. 学霸双胞胎开源斯坦福CS 221人工智能备忘录,图文并茂看懂反射、状态、变量、逻辑...

    一份斯坦福CS 221人工智能备忘录最近登上了GitHub Trending. 这份备忘录解释了课程中的许多名词.公式和原理,动图.文字.表格并茂,作者之一还是官方助教,堪称CS 221最佳学习笔记. ...

  4. Go语言库系列之dotsql

    导读:能单独拎出SQL文件的某一行或几行执行,是不是非常有趣?今天我们来介绍一下这个有意思的库--dotsql. 背景介绍 dotsql不是ORM,也不是SQL查询语句的构建器,而是可以在一个SQL文 ...

  5. Vue2.0 -- 钩子函数/ 过度属性/常用指令/以及Vue-resoure发送请求

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. SVN钩子HOOK设置自动备份,服务本地可以看到所有更新内容。

    可以实现SVN本机备份.或者其他备份.关键是可以保持有一份最新的SVN文件可以查看. 实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新web目录的方法,我们要在svn版本库中配置钩子来实 ...

  7. iOS 项目发布

    一.Apple开发者账号 1.1 开发者账号类型 个人级 公司级 企业级 公司和企业的可多人协作. 在苹果的开发者平台登录后,可在 People 界面邀请其他人员协作开发,邀请的人需要注册一个 app ...

  8. logstash用jdbc插件将数据库内容导入elasticsearch时间字段相差5小时

    logstash将mysql的数据导入elasticsearch之后发现时间字段的相差5个小时 解决办法: 在数据库连接配置后面加上?serverTimezone=UCT这个就OK了 logstash ...

  9. 了解PCI Express的Posted传输与Non-Posted传输

    0.写在前面 本文首发于公众号[两猿社],后续将在公众号内持续更新~ 其实算下来接触PCIe很久了,但是由于之前换工作,一直没有系统的学习和练手项目,现在新项目买了Synopsys的PCIe IP,总 ...

  10. SpringBoot学习笔记(十一:使用MongoDB存储文件 )

    @ 目录 一.MongoDB存储文件 1.MongoDB存储小文件 2.MongoDB存储大文件 2.1.GridFS存储原理 2.2.GridFS使用 2.2.1.使用shell命令 2.2.2.使 ...