| ||||||||||
| 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:原来auto有毒!In Reply To:原来auto有毒! Posted by:20051106 at 2016-12-11 21:52:06 > 原先程序:
> #include<iostream>
> #include<cstdio>
> #include<vector>
> #include<cmath>
> #include<algorithm>
> #include<string>
> #include<set>
> #include<map>
> #include<ctime>
> #include<cstring>
> #include<cassert>
> #include<bitset>
> #include<sstream>
> #include<queue>
> using namespace std;
> int prime[10100],d[10100];
> vector<int>a[10100],primes;
> int isValid(int x,int y)
> {
> int dif=0;
> for(int i=0;i<4;i++)
> {
> dif+=(x%10!=y%10);
> x/=10;
> y/=10;
> }
> return dif==1;
>
> }
> int main()
> {
> ios::sync_with_stdio(0);
> for(int i=1000;i<10000;i++)
> {
> prime[i]=1;
> for(int j=2;j*j<=i;j++)
> {
> if(i%j==0)
> {
> prime[i]=0;
> break;
> }
> }
> if(prime[i]) primes.push_back(i);
> }
> int x,y;
> for(auto x: primes)
> {
> for(auto y : primes)
> {
> if(isValid(x,y))
> a[x].push_back(y);
> }
> }
> int times;
> cin>>times;
> while(times--)
> {
> int from,to;
> cin>>from>>to;
> memset(d,-1,sizeof d);
> queue<int> q;
> d[from]=0;
> q.push(from);
> while(!q.empty() && d[to]<0)
> {
> int x=q.front();
> q.pop();
> for(auto y :a[x])
> {
> if(d[y]<0)
> {
> d[y]=d[x]+1;
> q.push(y);
> }
> }
> }
> cout<<d[to]<<endl;
> }
> return 0;
> }
> 苦思半天,找错后:
> #include<iostream>
> #include<cstdio>
> #include<vector>
> #include<cmath>
> #include<algorithm>
> #include<string>
> #include<set>
> #include<map>
> #include<ctime>
> #include<cstring>
> #include<cassert>
> #include<bitset>
> #include<sstream>
> #include<queue>
> using namespace std;
> int prime[10100],d[10100];
> vector<int>a[10100],primes;
> int isValid(int x,int y)
> {
> int dif=0;
> for(int i=0;i<4;i++)
> {
> dif+=(x%10!=y%10);
> x/=10;
> y/=10;
> }
> return dif==1;
>
> }
> int main()
> {
> for(int i=1000;i<10000;i++)
> {
> prime[i]=1;
> for(int j=2;j*j<=i;j++)
> {
> if(i%j==0)
> {
> prime[i]=0;
> break;
> }
> }
> if(prime[i]) primes.push_back(i);
> }
> for(int i=0;i<primes.size();i++)
> {
> for(int j=0;j<primes.size();j++)
> {
> int x=primes[i];
> int y=primes[j];
> if(isValid(x,y))
> a[x].push_back(y);
> }
> }
> int times;
> cin>>times;
> while(times--)
> {
> int from,to;
> cin>>from>>to;
> memset(d,-1,sizeof d);
> queue<int> q;
> d[from]=0;
> q.push(from);
> while(!q.empty() && d[to]<0)
> {
> int x=q.front();
> q.pop();
> for(int i=0;i<a[x].size();i++)
> {
> int y=a[x][i];
> if(d[y]<0)
> {
> d[y]=d[x]+1;
> q.push(y);
> }
> }
> }
> cout<<d[to]<<endl;
> }
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator