poj 3126 Prime Path
17244 단어 Path
코드가 다 똑같은 것 같아..
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 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cocos2d Lua 학습(一)ios에서 루아 함수 호출 및 전참 방법 lua 코드: 출력 결과: lua 호출 C++ 방법: add 함수: lua 코드: 출력 결과: 함수를 호출합니다. 함수를 호출하려면 다음 협의를 따르십시오. 우선, 호출할 함...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.