传送门

题解

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

 //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. vue-cli脚手架build目录下utils.js工具配置文件详解

    此文章用来解释vue-cli脚手架build目录中的utils.js配置文件 此配置文件是vue开发环境的wepack相关配置文件,主要用来处理css-loader和vue-style-loader ...

  2. ORACLE和MYSQL函数

    函数 编号 类别 ORACLE MYSQL 注释 1 数字函数 round(1.23456,4) round(1.23456,4) 一样: ORACLE:select round(1.23456,4) ...

  3. Java如何解决form表单上传文件,以及页面返回处理结果通知!

    前端JSP代码 <form id='formSumbit' class='form-horizontal' action='/ncpay/route/chlsubmcht/batchImpor' ...

  4. Codeforce 1004C

    Description Since Sonya is interested in robotics too, she decided to construct robots that will rea ...

  5. 模拟linux的内存分配与回收

    模拟linux的内存分配与回收 要求 通过深入理解内存分配管理的三种算法,定义相应的数据结构,编写具体代码. 充分模拟三种算法的实现过程,并通过对比,分析三种算法的优劣. (1)掌握内存分配FF,BF ...

  6. 爬虫模块之Request

    requests Requests唯一一个非转基因的Python HTTP库,人类就可以安全享用. Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是 ...

  7. Linux的基本指令--其他命令

    一 . 终端翻页: shift-pageup shift-pagedown 二 . 看手册:man man man 2 read 查看read系统函数的man page(在第二个section中,表示 ...

  8. json_encode和json_decode和isset和array_key_exists

    1.json_decode() json_decode — 对 JSON 格式的字符串进行编码         说明 mixed json_decode ( string $json [, bool ...

  9. codeforces:Roads in the Kingdom分析和实现

    题目大意:国家有n个城市,还有n条道路,每条道路连通两个不同的城市,n条道路使得所有n个城市相互连通.现在国家经费不足,要关闭一条道路.国家的不便度定义为国家中任意两个不同的城市之间的距离的最大值,那 ...

  10. 19-格子游戏(hdu2147博弈)

    http://acm.hdu.edu.cn/showproblem.php?pid=2147 kiki's game Time Limit: 5000/1000 MS (Java/Others)    ...