首页 > 其他分享 >6.质数路径

6.质数路径

时间:2023-03-22 22:12:34浏览次数:61  
标签:prime dist int 质数 路径 st continue include

原题:https://www.acwing.com/problem/content/description/4223/

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;

const int N=10010;
int st[N];
int prime[N],cnt;
int dist[N];

void init(int n)
{
    for(int i=2;i<=n;i++)
    {
        if(!st[i]){
            st[i]=true;
            prime[cnt++]=i;
        }
        for(int j=0;i<=n/prime[j];j++)
        {
            st[prime[j]*i]=true;
            if(i%prime[j]==0) break;
        }
    }
}

bool check(int a,int b)
{
    int diff=0;
    for(int i=0;i<4;i++)
    {
        if(a%10!=b%10){
            diff++;
        }
        a/=10,b/=10;
    }
    if(diff==1) return true;
    return false;
}

bool bfs(int a,int b)
{
    queue<int> q;
    q.push(a);
    memset(st,0,sizeof st);
    memset(dist,0x3f,sizeof dist);
    dist[a]=0;
    while(q.size()){
        int t=q.front();
        //cout<<t<<endl;
        q.pop();
        if(t==b) return true;
        for(int i=0;i<cnt;i++)
        {
            if(prime[i]<1000||prime[i]>=10000) continue;
            if(st[prime[i]]) continue;
            if(!check(prime[i],t)) continue;
            if(dist[prime[i]]>dist[t]+1)
            {
                dist[prime[i]]=dist[t]+1;
                st[prime[i]]=true;
                q.push(prime[i]);
            }
        }
    }
    return false;
}

int main()
{
    init(N-1);
    int T;
    cin>>T;
    while(T--)
    {
        int a,b;
        cin>>a>>b;
        if(bfs(a,b)){
            cout<<dist[b]<<endl;
        }
        else puts("Impossible");
    }
    return 0;
}

标签:prime,dist,int,质数,路径,st,continue,include
From: https://www.cnblogs.com/linearlearn/p/17245654.html

相关文章

  • P2764 最小路径覆盖问题
    求最少的路径数目覆盖DAG每个点(无点交集 #include<iostream>#include<algorithm>#include<queue>usingnamespacestd;constintN=500,M=5e5+5;constintinf......
  • Leectcode 63 不同路径II
    力扣题目跳转链接一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图......
  • java代码中获取classpath路径
    javaweb工程中,有时候需要自己手动的去读取classpath下面的配置文件,这里总结一点读取classpath路径的方法,分享一下。方法一:Stringpath=Test.class.getResource("/").......
  • Servlet多路径映射使用场景
    <servlet><servlet-name>ServletDemo</servlet-name><servlet-class>www.hw.web.ServletDemo</servlet-class></servlet><servlet-m......
  • hash模式下前后端路径相同时,nginx如何转发
    背景:前期没有进行前后端分离,前端页面由后端转发,即路由的前缀由后端的接口前缀决定;现在想要做到不改变路径做前后端分离且容器化。前后端分离后,前后端的转发要根据路径前......
  • tomcat配置虚拟路径,供用户访问静态资源
    tomcat配置虚拟路径,供用户访问静态资源在实际开发中,后台需要提供给用户访问静态资源,而且该静态资源不是在tomcat中,即不是在web目录下,那么用户是不能访问的,这时,需要配置tomc......
  • tp6自定义变量代替静态资源路径
    tp6在视图页面想使用一个变量直接代替public目录下的一些静态资源目录,可以定义 使用方式: ......
  • Windows10 安装OpenVINO(2021.4.2)非默认路径踩坑总结
    @TOC前言这几天因公司业务需要,下载了OpenVINO,真的是一把辛酸泪啊,晚上十一点,安装调试到凌晨四点,运行demo_squeezenet_download_convert_run.bat依旧报错一大堆,真的要炸了,后来......
  • matlab genpath命令 查看搜索路径
    在命令窗口中输入genpath命令,可以得到MATLAB所有的搜索路径首尾连接而成的一个长字符串。示例:>>genpathans=D:\R2009a\toolbox;D:\R2009a\toolbox\aero;D:\R2009a\tool......
  • Linux操作系统中命令行方式获取文件完整路径
    1、 whereis whereis命令用于搜索给定命令的二进制、源码和手册页文件,不能搜索普通文件(whereis可以列出命令、源文件和帮助文档的位置) 2、 which which返回在终......