Mr. B has recently discovered the grid named "spiral grid".
Construct the grid like the following figure. (The grid is actually infinite. The figure is only a small part of it.)

Considering
traveling in it, you are free to any cell containing a composite number
or 1, but traveling to any cell containing a prime number is
disallowed. You can travel up, down, left or right, but not diagonally.
Write a program to find the length of the shortest path between pairs of
nonprime numbers, or report it's impossible.

 
Input
Each test case is described by a line of input containing two nonprime integer 1 <=x, y<=10,000.
 
Output
For
each test case, display its case number followed by the length of the
shortest path or "impossible" (without quotes) in one line.
 
Sample Input
1 4
9 32
10 12
 
Sample Output
Case 1: 1
Case 2: 7
Case 3: impossible
 
 
 
 
 
 
 
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int book[401][401];
int a[401][401];
int b[401][401];
int vis[160005];
int prime[160005];
struct node
{
    int x;
    int y;
    int s;
} que[160005];
void make1()
{
   for(int i=1;i<=160001;i++)
   prime[i]=1;
        prime[1] = 0;
    for(int i = 2; i <= 160001; i++)
    {
        if(prime[i])
        {
            for(int j = 2*i; j <= 160001; j+=i)
                prime[j] = 0;
        }
    }

int x,y;
    int n=400;
    int tot=160000;
    a[0][0]=160000;
    x=0,y=0;
    while(tot>1)
    {
        while(y+1<n&&!a[x][y+1])
        {
            a[x][++y]=--tot;
        }
        while(x+1<n&&!a[x+1][y])
        {
            a[++x][y]=--tot;
        }

while(y-1>=0&&!a[x][y-1])
        {
            a[x][--y]=--tot;
        }
        while(x-1>=0&&!a[x-1][y])
        {
            a[--x][y]=--tot;
        }
    }
    for(int i=0; i<400; i++)

for(int j=0; j<400; j++)
        {
            if(prime[a[i][j]]==1)
                b[i][j]=1;
            else
                b[i][j]=0;
        }
}
int main()
{
    int t1,t2;
    int ans=0;
  make1();
    while(scanf("%d%d",&t1,&t2)!=EOF)
    {

int next[4][2]= {0,1,1,0,0,-1,-1,0};
        memset(book,0,sizeof(book));
        if(t1==t2)
            printf("Case %d: 0\n",++ans);
        else
        {
            int startx,starty,endx,endy;
            for(int i=0; i<=399; i++)
                for(int j=0; j<=399; j++)
                {
                    if(a[i][j]==t1)
                    {
                        startx=i;
                        starty=j;
                    }
                    if(a[i][j]==t2)
                    {
                        endx=i;
                        endy=j;
                    }
                }
            int head=1,tail=1;
            que[head].x=startx;
            que[head].y=starty;
            tail++;
            book[startx][starty]=1;
            int flag=0;
            while(head<tail)
            {
                for(int k=0; k<4; k++)
                {
                    int tx=que[head].x+next[k][0];
                    int ty=que[head].y+next[k][1];
                    if(tx<0||tx>399||ty<0||ty>399)
                        continue;
                    if(b[tx][ty]==0&&book[tx][ty]==0)
                    {
                        book[tx][ty]=1;
                        que[tail].x=tx;
                        que[tail].y=ty;
                        que[tail].s=que[head].s+1;
                        tail++;
                    }
                    if(tx==endx&&ty==endy)
                    {
                        flag=1;
                        break;
                    }
                }
                if(flag==1)
                    break;
                head++;
            }
            if(flag==1)
                printf("Case %d: %d\n",++ans,que[tail-1].s);
            else
                printf("Case %d: impossible\n",++ans);
        }
    }
    return 0;

}

 
 
 
 
 

hdu4255筛素数+广搜的更多相关文章

  1. 双向广搜 POJ 3126 Prime Path

      POJ 3126  Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16204   Accepted ...

  2. nyoj 592 spiral grid(广搜)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=592 解决以下问题后就方便用广搜解: 1.将数字坐标化,10000坐标为(0,0),这样就 ...

  3. poj3126 Prime Path 广搜bfs

    题目: The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...

  4. [Luogu]A%BProblem——线性筛素数与前缀和

    题目描述 题目背景 题目名称是吸引你点进来的[你怎么知道的] 实际上该题还是很水的[有种不祥的预感..] 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m接下来n行, ...

  5. 广搜 poj3278 poj1426 poj3126

    Catch That Cow Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u Ja ...

  6. HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?

    这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others)  ...

  7. HDU 5652(二分+广搜)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...

  8. 【板子】gcd、exgcd、乘法逆元、快速幂、快速乘、筛素数、快速求逆元、组合数

    1.gcd int gcd(int a,int b){ return b?gcd(b,a%b):a; } 2.扩展gcd )extend great common divisor ll exgcd(l ...

  9. CF449C Jzzhu and Apples (筛素数 数论?

    Codeforces Round #257 (Div. 1) C Codeforces Round #257 (Div. 1) E CF450E C. Jzzhu and Apples time li ...

随机推荐

  1. Quartz.net的cron表达式

    写在前面 前面有一篇文章用到了quartz.net,在设置定时时间的时候,使用了cron表达式,这里记录几种常见设置方式,方便对照使用. 详情 在这篇文章:Quartz.Net在windows服务中的 ...

  2. mysqldump使用方法

    1.mysqldump的几种常用方法: (1)导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbname.sql (2)导出数据库结构 ...

  3. python 参数的组合

    现在我们知道python定义函数的参数类型有:必选参数 默认参数 可变参数 关键字参数 但是在我们日常中我们是可以组合使用这些参数的:但是使用的时候,参数定义是有顺序的 定义的顺序必须是:必选参数,默 ...

  4. Html-input文本框只能输入数字

    onKeyPress="if ((event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;&qu ...

  5. sql-in/not in和exists/not exists的区别

    In和Exists的区别 这两个函数是差不多的,但由于优化方案不同,通常NOT Exists要比NOT IN要快,因为NOT EXISTS可以使用结合算法二NOT IN就不行了,而EXISTS则不如I ...

  6. 【SDOI2009】解题汇总

    又开了波专题,感觉就和炉石开冒险一样...(说的好像我有金币开冒险似的) /---------------------------------------------/ BZOJ-1226 [SDOI ...

  7. VMWare File Format Learning && Use VHD File To Boot VMWare && CoreOS Docker Configuration And Running

    目录 . Virtual Machine Introduce . Vmware Image File Format . VHD File Format . Convert VHD File Into ...

  8. 车牌号对应归属地及城市JSON带简码

    车牌号对应归属地及城市JSON带简码 car_city.json [ { "code": "冀A", "city": "石家庄&q ...

  9. UVA1220Party at Hali-Bula(树的最大独立集 + 唯一性判断)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105116#problem/H 紫书P282 员工和直属老板只能选一个,最多选多少人 思路 ...

  10. GNUPLOT画图工具

    http://blog.csdn.net/codingkid/article/details/7211492 不得不说这个工具实在是太强大了. 1.首先命令简单,不会有那么多的语法问题. 2.其次画图 ...