博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3126 Prime Path SPFA
阅读量:6991 次
发布时间:2019-06-27

本文共 1111 字,大约阅读时间需要 3 分钟。

http://poj.org/problem?

id=3126

题目大意:

给你两个四位的素数s和t,要求每次改变一个数字。使得改变后的数字也为素数,求s变化到t的最少变化次数。

思路:

首先求出全部4位素数。

对于两个素数之间,假设仅仅相差一个数字,那么就建立图。(双向)

最后求最短路就可以(能够SPFA也能够BFS)

#include
#include
#include
#include
using namespace std;const int MAXN=10000+10;const int INF=0x3ffffff;bool isprimer[MAXN];int primer[MAXN],num;int head[MAXN],len;struct edge{ int to,next; }e[MAXN*10];void add(int from,int to){ e[len].to=to; e[len].next=head[from]; head[from]=len++;}//推断两个数仅有一个数字不同 bool judge(char *x,char *y){ int cnt=0; for(int i=0;i<4;i++) if(x[i]==y[i]) cnt++; return cnt==3;}int dis[MAXN];bool vis[MAXN];int spfa(int s,int t){ for(int i=1000;i<=10000;i++) { dis[i]=INF; vis[i]=0; } dis[s]=0; vis[s]=true; queue
q; q.push(s); while(!q.empty()) { int cur=q.front(); q.pop(); for(int i=head[cur];i!=-1;i=e[i].next) { int to=e[i].to; if(dis[cur]+ 1 < dis[to]) { dis[to]=dis[cur]+1; if(!vis[to]) q.push(to); } } } return dis[t];}int main(){ memset(head,-1,sizeof(head)); num=len=0; for(int i=2;i*i

转载地址:http://wcbvl.baihongyu.com/

你可能感兴趣的文章
java语言中application异常退出和线程异常崩溃的捕获方法,并且在捕获的钩子方法中进行异常处理...
查看>>
架构师速成6-初中 分类: 架构师速成 2015-0...
查看>>
最新---java多线程下载文件
查看>>
【二】调通单机版的thrift-C++版本
查看>>
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
查看>>
ASP.NET MVC 主要的四种过滤器和三种具体实现类
查看>>
Python中的正则表达式
查看>>
由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射...
查看>>
(转)结构体中使用string所引发的问题
查看>>
Linux查看网卡流量(转)
查看>>
论文修改(1)
查看>>
[javaEE] web应用的目录结构&配置虚拟主机
查看>>
[PHP] 数据结构-反转链表PHP实现
查看>>
MySQL 如何利用一条语句实现类似于if-else条件语句的判断
查看>>
jQuery和Zepto冲突问题【解决】
查看>>
machinekey生成工具 v1.0 官方最新版
查看>>
http server v0.1_mime.c
查看>>
open files
查看>>
MVC ——RouteTable.Routes的使用
查看>>
玩转X-CTR100 | STM32F4 l X-Assistant串口助手控制功能
查看>>