| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:样例过了,但是A不了,有提供样例的大佬吗?In Reply To:样例过了,但是A不了,有提供样例的大佬吗? Posted by:1511180952 at 2019-06-30 22:53:40 > #include <iostream>
> #include <cstdio>
> #include <cstring>
> #include <algorithm>
> #include <cmath>
> #include <queue>
> using namespace std;
>
> const int maxn=10010;
> bool vis[maxn];
> int d[maxn];
> int st,ed;
>
> bool isprime(int n){
> if(n<=1) return false;
> int sqr=(int)sqrt(1.0*n);
> for(int i=2;i<=sqr;i++){
> if(n%i==0)
> return false;
> }
> return true;
> }
>
> int a[4];
> void toarray(int n){
> int cnt=0;
> while(n){
> a[cnt++]=n%10;
> n/=10;
> }
> reverse(a,a+4);
> }
>
> int toint(){
> int res=0;
> for(int i=0;i<4;i++){
> res=res*10+a[i];
> }
> return res;
> }
>
> void BFS(int st){
> queue<int> q;
> q.push(st);
> while(!q.empty()){
> int top=q.front();
> q.pop();
> toarray(top);
> if(top==ed)
> return ;
> for(int i=0;i<10;i++){
> for(int j=0;j<4;j++){
> if(i!=a[j]){
> int tmp=a[j];
> a[j]=i;
> int tmpres=toint();
> if(!isprime(tmpres)||vis[tmpres]==true){
> a[j]=tmp;
> continue;
> }
> d[tmpres]=d[top]+1;
> q.push(tmpres);
> a[j]=tmp;
> vis[tmpres]=true;
> }
> }
> }
> }
> }
>
>
> int main()
> {
> int T;
> scanf("%d",&T);
> while(T--){
> fill(vis,vis+maxn,false);
> fill(d,d+maxn,0);
> scanf("%d%d",&st,&ed);
> BFS(st);
> printf("%d\n",d[ed]);
> }
> return 0;
> }
>
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator