传送门

题解

至今没看懂这深搜怎么写的……

 //minamoto
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
inline int read(){
#define num ch-'0'
char ch;bool flag=;int res;
while(!isdigit(ch=getc()))
(ch=='-')&&(flag=true);
for(res=num;isdigit(ch=getc());res=res*+num);
(flag)&&(res=-res);
#undef num
return res;
}
#define Nosolution ((n==19)?20:30)
const int N=;
int w[N][N];
inline void add(int u,int v){
w[u][++w[u][]]=v;
w[v][++w[v][]]=u;
}
int Brk[N],b[N],lca[N][N],d[N],vis[N],p[N],has[N];
int s,t,n,dep,now;
queue<int> q;
void spfa(int s){
memset(d,0x3f,sizeof(d));
d[s]=,q.push(s),vis[s]=;
while(!q.empty()){
int u=q.front();q.pop();vis[u]=;
for(int i=;i<=w[u][];++i){
int v=w[u][i];
if(d[v]>d[u]+){
d[v]=d[u]+,p[v]=u;
if(!vis[v]) vis[v]=,q.push(v);
}
}
}
}
int cost=;
bool dfs(int deep){
if(b[t]==) return true;
if(deep+lca[now][t]+cost>dep) return false;
for(int i=;i<=Brk[];++i){
int u=Brk[i];
for(int j=;j<=w[u][];++j){
int v=w[u][j];
if(!b[v]){
Brk[i]=v;
if(u==now) now=v;
if(has[u]&&!has[v]&&b[u]!=) --cost;
if(has[v]&&!has[u]&&b[u]!=) ++cost;
swap(b[v],b[u]);
if(dfs(deep+)) return true;
if(has[u]&&!has[v]&&b[v]!=) ++cost;
if(has[v]&&!has[u]&&b[v]!=) --cost;
if(now==v) now=u;
Brk[i]=u;
swap(b[v],b[u]);
}
}
}
return false;
}
int main(){
//freopen("testdata.in","r",stdin);
n=read(),s=read(),t=read();
now=s;
Brk[++Brk[]]=s;
for(int i=;i<n;++i){
b[i]=read()^;
if(b[i]) Brk[++Brk[]]=i;
int s,v;
s=read();
for(int j=;j<s;++j){
v=read();
if(!lca[i][v]&&lca[v][i]){
add(i,v);
}
lca[i][v]=;
}
}
b[s]=;
for(int i=;i<n;++i){
spfa(i);
for(int j=;j<n;++j) lca[i][j]=d[j];
if(i==s){
int u=t;
while(u!=s){
has[u]=;
if(b[u]==) ++cost;
u=p[u];
}
has[s]=;
}
}
for(dep=;dep<=;++dep)
if(dfs()) return printf("%d\n",dep),;
printf("%d\n",Nosolution);
return ;
}

洛谷P2775 机器人路径规划问题的更多相关文章

  1. 洛谷P1126 机器人搬重物

    洛谷1126 机器人搬重物 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一个直径1.6米的球.在试验阶段,机器人被用于在一个储藏室中搬运货物.储藏室是一个N*M的网格, ...

  2. V-rep学习笔记:机器人路径规划2

    路径规划问题是机器人学研究的一个重要领域,它是指给定操作环境以及起始和目标的位置姿态,要求选择一条从起始点到目标点的路径,使运动物体(移动机器人或机械臂)能安全.无碰撞地通过所有的障碍物而达到目标位置 ...

  3. ROS机器人路径规划介绍--全局规划

    ROS机器人路径规划算法主要包括2个部分:1)全局路径规划算法:2)局部路径规划算法: 一.全局路径规划 global planner ROS 的navigation官方功能包提供了三种全局路径规划器 ...

  4. 机器人路径规划其一 Dijkstra Algorithm【附动态图源码】

    首先要说明的是,机器人路径规划与轨迹规划属于两个不同的概念,一般而言,轨迹规划针对的对象为机器人末端坐标系或者某个关节的位置速度加速度在时域的规划,常用的方法为多项式样条插值,梯形轨迹等等,而路径规划 ...

  5. 机器人路径规划其二 A-Star Algorithm【附动态图源码】

    首先要说明的是,机器人路径规划与轨迹规划属于两个不同的概念,一般而言,轨迹规划针对的对象为机器人末端坐标系或者某个关节的位置速度加速度在时域的规划,常用的方法为多项式样条插值,梯形轨迹等等,而路径规划 ...

  6. 网络流24题 第三题 - CodeVS1904 洛谷2764 最小路径覆盖问题 有向无环图最小路径覆盖 最大流 二分图匹配 匈牙利算法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径 ...

  7. V-rep学习笔记:机器人路径规划1

     Motion Planning Library V-REP 从3.3.0开始,使用运动规划库OMPL作为插件,通过调用API的方式代替以前的方法进行运动规划(The old path/motion ...

  8. 洛谷p1052过河 路径压缩+dp

    洛谷 P1052 过河 思路部分可以看这篇博客 我将在这里对其进行一些解释与补充 首先我们先看题 乍一看 这不是模板题吗 然后开开心心的敲了一个简单dp上去 #include<iostream& ...

  9. 洛谷P2542 [AHOI2005]航线规划(LCT,双连通分量,并查集)

    洛谷题目传送门 太弱了不会树剖,觉得LCT好写一些,就上LCT乱搞,当LCT维护双连通分量的练手题好了 正序删边是不好来维护连通性的,于是就像水管局长那样离线处理,逆序完成操作 显然,每个点可以代表一 ...

随机推荐

  1. Python Twisted系列教程2:异步编程初探与reactor模式

    作者:dave@http://krondo.com/slow-poetry-and-the-apocalypse/  译者:杨晓伟(采用意译) 这个系列是从这里开始的,欢迎你再次来到这里来.现在我们可 ...

  2. php 中php-fpm 的重启、终止操作命令

    php 中php-fpm 的重启.终止操作命令: service nginx restart service php-fpm restart 查看php-fpm进程数:ps aux | grep -c ...

  3. ubuntu12上部署Django1.8.4+uwsgi+nginx超级详细流程配置到云服务器

    环境: 系统:ubuntu12,系统自带默认有python2.7 框架:Django1.8.4,需要python2.7以上才能支持   前言: 用户浏览器发送http请求->nginx(静态文件 ...

  4. codeforce 457DIV2 B题

    题意:  题目给出两个整数n,k,(n<=10^18,k<=10^5),求一个含有k个整数的序列,要求以2为底,以序列内数字为幂的和为n,其中序列内最大的数最小,若有多个序列满足条件,输出 ...

  5. JS事件冒泡和事件捕获的详解

    在学校,听老师讲解事件冒泡和事件捕获机制的时候跟听天书一样,只依稀记得IE使用的是事件冒泡,其他浏览器则是事件捕获.当时的我,把它当成IE浏览器兼容问题,所以没有深究(IE8以下版本的浏览器已基本退出 ...

  6. vector的简单用法

    vector是C++中容器的一种,与普通的数组相比,它可以动态的增长,而且还有封装了用于顺序表的操作的方法. 使用vector定义了容器之后,如果定义了容器的大小,则可以在大小范围之内直接使用数组的方 ...

  7. SpringBoot26 利用 Ribbon + RestTemplate 调用远程服务资源

    1 RestTemplate扫盲 借助 RestTemplate,Spring应用能够方便地使用REST资源  2 准备 创建三个springCloud项目 >Eureaka : 服务注册中心 ...

  8. 面试题:SpringMVC的工作流程

    SpringMVC是当今最主流的Web MVC框架,没有之一,要做一名合格的JavaWeb工程师,学好它势在必行! 与Struts2原理不同,SpringMVC是通过最基础最传统的servlet来实现 ...

  9. Windows下用Nginx配置遇到的问题

    Nginx是一款轻量级的web服务器/反向代理服务器,更详细的释义自己百度了.目前国内像新浪.网易等都在使用它.先说下我的服务器软件环境: 系统:Windows Server + IIS + ngin ...

  10. 数据结构 Merge合并排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...