poj 3126 Prime Path

来源:互联网 发布:php gtk 还有人维护吗 编辑:程序博客网 时间:2024/06/10 20:59

简单的bfs 。。

#include<stdio.h>#include<queue>#include<math.h>#include<string.h>using namespace std;int judge[10000];int step[10000];void zhishu(){    int i;    for(i=1000;i<=9999;i++)    {        int flag=1;        for(int j=2;j<=sqrt(i);j++)        {            if(i%j==0)            {                flag=0;                break;            }        }        if(flag==1)            judge[i]=1;    }}int main(){    int T;    scanf("%d",&T);    memset(judge,0,sizeof(judge));    zhishu();    queue<int>Q;    while(T--)    {        int start,end;        scanf("%d%d",&start,&end);        if(start==end)            {                printf("0\n");                continue;            }        if(judge[start]==0||judge[end]==0)            {                printf("Impossible\n");                continue;            }        memset(step,-1,sizeof(step));        step[start]=0;        Q.push(start);        int bigflag=1;        while((!Q.empty())&&bigflag==1)        {            int old=Q.front();            Q.pop();            for(int i=1;i<=1000&&bigflag==1;i=i*10)                for(int j=0;j<=9;j++)                {                    int new1=old%i+old/(i*10)*i*10+j*i;                    if(judge[new1]==1&&step[new1]==-1)                    {                        step[new1]=step[old]+1;                        if(new1==end)                        {                            bigflag=0;                            printf("%d\n",step[end]);                            break;                        }                        Q.push(new1);                    }                }        }        while(!Q.empty())            Q.pop();        if(bigflag==1)            printf("Impossible\n");    }    return 0;}
0 0
原创粉丝点击