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

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

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. 四则运算APP版

    (一)四则运算APP版 这这个Demo的目的就是强化一下本周学习的Android的Jetpack里的新内容,接下来我将通过这个Demo来展示我所学到的新知识. 先列出新学到的知识:ViewModel, ...

  2. ssm整合配置文件

    web.xml: <!-- 指定spring的配置文件的路径和名称 --> <context-param> <param-name>contextConfigLoc ...

  3. HDU 4325 Flowers 树状数组+离散化

    Flowers Problem Description As is known to all, the blooming time and duration varies between differ ...

  4. python之进程,线程

    什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本 ...

  5. 1~n的之间的k个数组成和为n的方案数(动态规划)

    绯色的子弹 Description 众所周知,夏季奥林匹克运动会时隔56年第二次在东京举办,紧接着出来的<名侦探柯南 M24绯色的子弹>竟也是有奥运会的背景,最重要的是重归主线!!!(赤井 ...

  6. C++中的map

    c++中的map类型变量不能为const类型 示例 struct INST{ string name; string type; string func; }; map<string, INST ...

  7. Linux学习66 运维安全-通信加密和解密技术入门

    一.Linux Service and Security 1.OpenSSL(ssl/tls)协议 2.OpenSSH(ssh)协议 3.bind(dns) 4.web(http):httpd(apa ...

  8. sqlalchemy + alembic数据迁移

    需要安装的包工具 pip install pymysql pip install sqlalchemy pip install alembic   创建表 新建models.py from sqlal ...

  9. 多级分销概念 MongoDB||MySQL

    1.背景 购物软件中提供推荐注册返利机制,A->B,A->C,B->D,B->E.被邀请人只有一对一的上级,上级对下级是一对多,用户可以一直邀请用户. 2.实现方法 2.1.M ...

  10. Flask 入门(十)

    flask 中的 db.relationship() 上文提到的方法,也可以找到狗的主人,但是,方便吗?,如果一个人有多只狗呢? 承接上文,修改main.py中的代码如下: #encoding:utf ...