zoukankan      html  css  js  c++  java
  • poj 3126 Prime Path

    uestc的方老师与素数是不是就是根据这个题改的。。 

    感觉好像代码都完全一样。。

      1 #include<iostream>
      2 #include<cstdio>
      3 #include<cstdlib>
      4 #include<cstring>
      5 #include<string>
      6 #include<queue>
      7 #include<algorithm>
      8 #include<map>
      9 #include<iomanip>
     10 #include<climits>
     11 #include<string.h>
     12 #include<numeric>
     13 #include<cmath>
     14 #include<stdlib.h>
     15 #include<vector>
     16 #include<stack>
     17 #include<set>
     18 #define INF 1e7
     19 #define MAXN 100010
     20 #define maxn 1000010
     21 #define Mod 1000007
     22 #define N 1299800
     23 using namespace std;
     24 typedef long long LL;
     25 
     26 int prime[N];
     27 int vis[N];
     28 void run()
     29 {
     30     int k = 1;
     31     for (LL i = 2; i <= N; ++i)
     32         if (!vis[i]) {
     33             prime[k++] = i;
     34             for (LL j = i*i; j < N; j += i)
     35                 vis[j] = 1;
     36         }
     37     /*for (int i = 1; i < 1300; ++i)
     38         cout << prime[i] << " ";
     39     cout << endl;*/
     40 }
     41 
     42 int n, m;
     43 int T;
     44 int used[11000];
     45 
     46 int bfs()
     47 {
     48     queue<int> q;
     49     int step = 0;
     50     q.push(n);
     51     used[n] = 1;
     52     q.push(-1);
     53     while (!q.empty()) {
     54         int now = q.front();
     55         if (now == -1) {
     56             q.pop();
     57             if (q.empty()) return -1;
     58             step++;
     59             q.push(-1); continue;
     60         }q.pop();
     61         if (now == m) return step;
     62         for (int i = 0; i < 4; ++i) {
     63             if (i == 0) {
     64                 for (int j = 1; j <= 9; ++j) {
     65                     if (now / 1000 == j) continue;
     66                     int next = j * 1000 + now % 1000;
     67                     if (!vis[next] && !used[next]) {
     68                         q.push(next);
     69                         used[next] = 1;
     70                     }
     71                 }
     72             }
     73             else if (i == 1) {
     74                 for (int j = 0; j <= 9; ++j) {
     75                     if ((now / 100) % 10 == j) continue;
     76                     int next = j * 100 + now % 100 + (now / 1000) * 1000;
     77                     if (!vis[next] && !used[next]) {
     78                         q.push(next);
     79                         used[next] = 1;
     80                     }
     81                 }
     82             }
     83             else if (i == 2) {
     84                 for (int j = 0; j <= 9; ++j) {
     85                     if ((now / 10) % 10 == j) continue;
     86                     int next = j * 10 + now % 10 + (now / 100) * 100;
     87                     if (!vis[next] && !used[next]) {
     88                         q.push(next);
     89                         used[next] = 1;
     90                     }
     91                 }
     92             }
     93             else if (i == 3) {
     94                 for (int j = 0; j <= 9; ++j) {
     95                     if (now % 10 == j) continue;
     96                     int next = j + (now / 10) * 10;
     97                     if (!vis[next] && !used[next]) {
     98                         q.push(next);
     99                         used[next] = 1;
    100                     }
    101                 }
    102             }
    103         }
    104     }
    105     return -1;
    106 }
    107 
    108 
    109 void process()
    110 {
    111     memset(used, 0, sizeof(used));
    112     scanf("%d%d", &n, &m);
    113     int ans = bfs();
    114     if (ans == -1) puts("Impossible");
    115     else printf("%d
    ",ans);
    116 }
    117 
    118 int main()
    119 {
    120     run();
    121     scanf("%d", &T);
    122     while (T--)
    123         process();
    124     return 0;
    125 }
  • 相关阅读:
    技术的那些事儿_2_产品与工艺
    for与foreach再探讨
    技术的那些事儿_3_西方技术管理的精髓
    搭建免费的.Net开发环境
    CDN
    servu 系统服务看门狗,自动脱机补丁,自动启动
    .NET Remoting程序开发入门篇
    网管必知远程终端3389端口合理修改秘藉
    反射方法调用时的一个错误:参数计数不匹配( parameter count mismatch )
    VPS性能测试第一步:CPU测试
  • 原文地址:https://www.cnblogs.com/usedrosee/p/4369713.html
Copyright © 2011-2022 走看看