Prime Path(POJ 3126 BFS)
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 15325 | Accepted: 8634 |
Description
The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices. — It is a matter of security to change such things every now and then, to keep the enemy in the dark.
— But look, I have chosen my number 1033 for good reasons. I am the Prime minister, you know!
— I know, so therefore your new number 8179 is also a prime. You will just have to paste four new digits over the four old ones on your office door.
— No, it’s not that simple. Suppose that I change the first digit to an 8, then the number will read 8033 which is not a prime!
— I see, being the prime minister you cannot stand having a non-prime number on your door even for a few seconds.
— Correct! So I must invent a scheme for going from 1033 to 8179 by a path of prime numbers where only one digit is changed from one prime to the next prime.
Now, the minister of finance, who had been eavesdropping, intervened.
— No unnecessary expenditure, please! I happen to know that the price of a digit is one pound.
— Hmm, in that case I need a computer program to minimize the cost. You don't know some very cheap software gurus, do you?
— In fact, I do. You see, there is this programming contest going on... Help the prime minister to find the cheapest prime path between any two given four-digit primes! The first digit must be nonzero, of course. Here is a solution in the case above.
1033
1733
3733
3739
3779
8779
8179
The cost of this solution is 6 pounds. Note that the digit 1 which got pasted over in step 2 can not be reused in the last step – a new 1 must be purchased.
Input
Output
Sample Input
3
1033 8179
1373 8017
1033 1033
Sample Output
6
7
0
单纯的将所有情况都搜一遍
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
bool prime[];
bool vis[];
int n[];
int a,b;
struct node
{
int num,t;
};
void init()
{
int i,j;
memset(prime,,sizeof(prime));
for(i=;i<;i++)
{
for(j=;j<i;j++)
{
if(i%j==)
break;
}
if(j==i)
{
prime[i]=; //1代表质数
//cout<<i<<endl;
}
}
for(i=;i<;i++)
n[i]=i;
n[]=,n[]=,n[]=,n[]=;
return;
}
int bfs()
{
int i,j;
queue<node> Q;
node tem,u;
int k;
tem.num=a,tem.t=;
memset(vis,,sizeof(vis));
Q.push(tem);
while(!Q.empty())
{
tem=Q.front();
Q.pop();
//cout<<tem.num<<endl;
/*if(tem.num==3733)
printf("adsfadsf\n");*/
if(tem.num==b)
return tem.t;
for(i=;i<=;i++)
{
if(tem.num%==n[i])
continue;
u.num=tem.num/;
u.num=u.num*+n[i];
//cout<<u.num<<" "<<prime[u.num]<<" "<<vis[u.num]<<endl;
if(vis[u.num]==&&prime[u.num])
{
u.t=tem.t+;
vis[u.num]=;
Q.push(u);
}
}
for(i=;i<=;i++)
{
k=(tem.num/)%;
if(k==n[i])
continue;
k=tem.num%;
u.num=((tem.num/)*+n[i])*+k;
if(vis[u.num]==&&prime[u.num])
{
u.t=tem.t+;
vis[u.num]=;
Q.push(u);
}
}
for(i=;i<=;i++)
{
k=(tem.num/)%;
if(k==n[i])
continue;
k=tem.num%;
u.num=((tem.num/)*+n[i])*+k;
if(vis[u.num]==&&prime[u.num])
{
u.t=tem.t+;
vis[u.num]=;
Q.push(u);
}
}
for(i=;i<=;i++)
{
k=tem.num/;
if(k==n[i])
continue;
//cout<<k<<" "<<n[i]<<endl;
k=tem.num%;
u.num=n[i]*+k;
// cout<<u.num<<endl;
if(vis[u.num]==&&prime[u.num])
{
u.t=tem.t+;
vis[u.num]=;
//cout<<u.num<<endl;
Q.push(u);
}
}
//break;
}
return -;
}
int main()
{
int T,ans;
init();
freopen("in.txt","r",stdin);
//freopen("ou.txt","w",stdin);
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&a,&b);
ans=bfs();
if(ans==-) printf("Impossible\n");
else printf("%d\n",ans);
}
}
Prime Path(POJ 3126 BFS)的更多相关文章
- Prime Path (poj 3126 bfs)
Language: Default Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11703 Ac ...
- Prime Path (POJ - 3126 )(BFS)
转载请注明出处:https://blog.csdn.net/Mercury_Lc/article/details/82697622 作者:Mercury_Lc 题目链接 题意:就是给你一个n, ...
- POJ 3216 Prime Path(打表+bfs)
Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 27132 Accepted: 14861 Desc ...
- Prime Path(poj 3126)
Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...
- (广度搜索)A - Prime Path(11.1.1)
A - Prime Path(11.1.1) Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64 ...
- POJ 3126 Prime Path(筛法,双向搜索)
题意:一个4位的素数每次变动一个数位,中间过程也要上素数,问变成另一个的最小步数. 线性筛一遍以后bfs就好.我写的双向,其实没有必要. #include<cstdio> #include ...
- UVa 1599 Ideal Path (两次BFS)
题意:给出n个点,m条边的无向图,每条边有一种颜色,求从结点1到结点n颜色字典序最小的最短路径. 析:首先这是一个最短路径问题,应该是BFS,因为要保证是路径最短,还要考虑字典序,感觉挺麻烦的,并不好 ...
- 2018.10.21 codeforces1071B. Minimum path(dp+贪心+bfs)
传送门 唉考试的时候写错了两个细节调了一个多小时根本没调出来. 下来又调了半个小时才过. 其实很简单. 我们先dpdpdp出最开始最多多少个连续的aaa. 然后对于没法继续连续下去的用贪心+bfsbf ...
- POJ 3126 Prime Path(素数路径)
POJ 3126 Prime Path(素数路径) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 The minister ...
随机推荐
- NSString 去掉前后空格或回车符
NSString *string = @" spaces in front and at the end "; NSString *trimmedString = [string ...
- 《转》ACTIONBAR-PULLTOREFRESHLIBS+沉浸式在部分手机上的布局错乱,目前知道的三星系统(TouchWiz)
转载:http://www.cnblogs.com/wubingshenyin/p/4413672.html(原文连接) 前段时间看见ActionBar-PullToRefreshLibs用来刷新很好 ...
- Django 反向生成 从数据库生成Model
Django 反向生成 从数据库生成Model 使用Django生成Model python manage.py inspectdb或python manage.py inspectdb > m ...
- 在Fragment中使用BaiduMap SDK
1:fragment_bshdzh.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- Ubuntu下配置NFS服务
Table of Contents 1.下载相关软件 2.建立共享目录 3.修改该配置文件 4.重启服务 5.测试服务器 6.测试客户端 测试系统:Ubuntu8.04 1.下载相关软件 使用如下命令 ...
- 使用FastReport的UserDataSet时候,遇到TfrxMemoView内容过多而打印不全的问题
解决方案很简单,就是把Memo所在的Band勾选Stretch就行了.另外还可勾选StartNewPage. 至于UserDataSet本身,猜测就是人为的构造一个类似数据库的集合,大致使用代码如下: ...
- ArcGIS API for Silverlight开发入门
你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我 都没关系.但你不能否认3G是一种趋势,最终我们每个人都会被包裹在3G网络中.1100也不是一成不变,没准哪天为了打击 ...
- Hive 3、Hive 的安装配置(本地derby模式)
这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可; $ vim hive-site.xml <configuration> <property> ...
- Unity 弹道轨迹
using UnityEngine; using System.Collections; public class ProjectileTest : MonoBehaviour { public Ga ...
- python学习之路-1 python基础操作
本篇所涉及的内容 变量 常量 字符编码 用户交互input 格式化字符串 python的缩进规则 注释 初始模块 条件判断 循环 变量 变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中 ...