Transform

Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)

Problem Description

One can transform xinto x+d  if dis divisor of x. Find out the minimum number of steps to transform a into b.

Input

Two integers a and b.

(1≤a,b≤105)

Output

The only integer denotes the minimum number of steps. Print −1if impossible.

Sample Input

1 6

Sample Output

3

Hint

1→2→4→6or 1→2→3→6

Source

ftiasch

Manager

 
题意:x变为 x+d d为x的因子  问由a变为b最少要多少步骤  无法到达 输出-1
 
题解: bfs处理 注意求因子的处理
         if(gg.x<=b&&vis[gg.x]==0)  注意两个比较式的先后顺序   vis数组 re多次 
 
 #include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
#include<cmath>
#define ll long long
#define pi acos(-1.0)
#define mod 1000000007
using namespace std;
int a,b;
struct node
{
int x;
int step;
}exm,gg;
queue<node> q;
int vis[];
void bfs(int st)
{
memset(vis,,sizeof(vis));
while(!q.empty())
q.pop();
exm.x=st;
exm.step=;
vis[st]=;
q.push(exm);
while(!q.empty())
{
exm=q.front();
q.pop();
if(exm.x==b)
{
cout<<exm.step<<endl;
break;
}
for(int i=;i<=sqrt(exm.x);i++)
{
if(exm.x%i==)
{
gg.x=exm.x+i;
gg.step=exm.step+;
if(gg.x<=b&&vis[gg.x]==)
{
q.push(gg);
vis[gg.x]=;
}
gg.x=exm.x+exm.x/i;
gg.step=exm.step+;
if(gg.x<=b&&vis[gg.x]==)
{
q.push(gg);
vis[gg.x]=;
}
}
}
}
}
int main()
{
while(scanf("%d %d",&a,&b)!=EOF)
{
if(a<=b)
bfs(a);
else
cout<<"-1"<<endl;
}
return ;
}

ACdream 1025 bfs的更多相关文章

  1. acdream 1681 跳远女王(BFS,暴力)

    Problem Description 娜娜觉得钢琴很无趣了,就抛弃了钢琴,继续往前走,前面是一片湖,娜娜想到湖的对岸,可惜娜娜找了好久都没找到小桥和小船,娜娜也发现自己不是神仙,不能像八仙过海一样. ...

  2. acdream 1211 Reactor Cooling 【边界网络流量 + 输出流量】

    称号:acdream 1211 Reactor Cooling 分类:无汇的有上下界网络流. 题意: 给n个点.及m根pipe,每根pipe用来流躺液体的.单向的.每时每刻每根pipe流进来的物质要等 ...

  3. 胜利大逃亡 HDU1429 (bfs)

    最后两题算是这个专题最难的两题了 这题关键是标记数组 我一开始设置的是 四维的  第三维是朝向  第四维是钥匙个数 但是 不同的取法钥匙个数可能会重复   如:取ab钥匙和取ac钥匙都是两枚  导致w ...

  4. BFS+二进制状态压缩 hdu-1429

    好久没写搜索题了,就当练手吧. vis[][][1025]第三个维度用来维护不同key持有状态的访问情况. 对于只有钥匙没有对应门的位置,置为'.',避免不必要的状态分支. // // main.cp ...

  5. ACdream区域赛指导赛之手速赛系列(2)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/DaiHaoC83E15/article/details/26187183        回到作案现场 ...

  6. hdu 1429 bfs+二进制状态压缩

    开始时候只用了BFS,显然超时啊,必然在结构体里加一个数组什么的判重啊,开始用的一个BOOL数组,显然还是不行,复杂度高,每次都要遍历数组来判重:后百度之,学习了二进制状态压缩,其实就用一个二进制数来 ...

  7. HDU 3247 Resource Archiver (AC自己主动机 + BFS + 状态压缩DP)

    题目链接:Resource Archiver 解析:n个正常的串.m个病毒串,问包括全部正常串(可重叠)且不包括不论什么病毒串的字符串的最小长度为多少. AC自己主动机 + bfs + 状态压缩DP ...

  8. 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

    图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...

  9. 【BZOJ-1656】The Grove 树木 BFS + 射线法

    1656: [Usaco2006 Jan] The Grove 树木 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 186  Solved: 118[Su ...

随机推荐

  1. kubernetes基础架构及原理

    kubernetes简称“k8s” 其中“8”代表的是“k”和“s”中间的8个字母. k8s是Google公司开发的Borg项目中独立出来的容器编排工具,然后将其捐献给CNCF这个组织,然后发扬光大. ...

  2. JAVA实现RSA加密,非对称加密算法

    RSA.java package org.icesnow.jeasywx.util.security; import java.security.Key; import java.security.K ...

  3. ios 苹果内购订单验证 --- php实现

    验证函数: function appleVerify($receipt_data,$orderId = 0) { /* * 21000 App Store不能读取你提供的JSON对象 * 21002 ...

  4. php 图片操作类,支持生成缩略图,添加水印,上传缩略图

    <?php class Image {     //类开始     public $originimage = ""; //源图片文件地址     public $image ...

  5. python-4函数式编程

    1-高阶函数 变量可以指向函数.   def add(x, y, f): 例如f参数为函数 编写高阶函数,就是让函数的参数能够接收别的函数. Python内建了map()和reduce()高阶函数. ...

  6. 11.2,nginx负载均衡实验

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

  7. Android开发——弹性滑动的两种实现方式

    0. 前言   欢迎转载,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52538723 我们在Android开发--View滑动的三 ...

  8. Hibernate---架构

    Hibernate 架构是分层的,作为数据访问层,你不必知道底层 API .Hibernate 利用数据库以及配置数据来为应用程序提供持续性服务(以及持续性对象). 下面是一个非常高水平的 Hiber ...

  9. 容器技术Docker

    什么是decker容器 简单理解就是将代码和部署环境一起打包的一个容器

  10. cycling -avoid the vicious cycle

    ‘Numerous' studies in the past appear to have shown a link between cycling and ED. The researchers a ...