题意:

n 点 m 边有向图,给出行走路径,求行走途中到路径终点最短路变化次数的最小值和最大值 。

思路 :

逆向广搜,正向模拟。

#include <bits/stdc++.h>
using namespace std; const int M=220000; vector<int> e1[M],e2[M];
int p[M],dis[M]; int main()
{
int n,m;cin>>n>>m;
for(int i=0;i<m;i++){
int u,v;cin>>u>>v;
e1[u].push_back(v);
e2[v].push_back(u);
}
int k;cin>>k;
for(int i=0;i<k;i++) cin>>p[i];
queue<int> q;
q.push(p[k-1]);
dis[p[k-1]]=1;
while(!q.empty()){
int u=q.front();
q.pop();
for(int v:e2[u]){
if(dis[v]==0){
q.push(v);
dis[v]=dis[u]+1;
}
}
}
int mi=0,mx=0;
for(int i=0;i<k-1;i++){
if(dis[p[i]]!=dis[p[i+1]]+1)
++mi;
for(int v:e1[p[i]]){
if(v!=p[i+1]&&dis[p[i]]==dis[v]+1){
++mx;
break;
}
}
}
cout<<mi<<' '<<mx<<endl;
return 0;
}

最新文章

  1. JSON 获取属性值的方法
  2. web报表移动端如何进行移动设备绑定与撤销
  3. Oracle CASE WHEN 用法介绍
  4. Mac OS X 上的安装nsq并使用
  5. switch-case 执行顺序
  6. 渲染voronoi图
  7. 汇编中Enter与Leave指令
  8. HTML5游戏开发框架phaser学习日志(一)下载phaser,在IIS中配置phaser的examples站点
  9. Hadoop动态加入/删除节点(datanode和tacktracker)
  10. 可以通过Action来判断是什么操作触发了事件
  11. linux最常用命令
  12. 在WebBrowser控件使用js调用C#方法
  13. vue中的tab栏切换内容变换
  14. 防止网页被别人的网站iframe,服务端如何设置HTTP头部中的X-Frame-Options信息?
  15. python os模块详解
  16. php输出数据到csv文件
  17. 函数和常用模块【day05】:迭代器(六)
  18. grad-cam 、cam 和热力图,基于keras的实现
  19. 8.14 git??sourceTree??
  20. 一、Linq简介

热门文章

  1. Jmeter(三十五) - 从入门到精通进阶篇 - 关联(详解教程)
  2. JAVA之JDBC数据库连接池总结篇
  3. 爬虫系列 | 6、详解爬虫中BeautifulSoup4的用法
  4. 创建Django REST framework工程
  5. 04--Docker数据卷和数据卷容器
  6. django中的几种返回模版的方式
  7. 【2020CSP-S模拟赛day5】总结
  8. JavaWeb三大框架基础架构——CRUD的基础功能搭建
  9. 夯实基础系列一:Java 基础总结
  10. Bitter.Core系列十:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 Log 日志