// UVa 12160 - Unlock the Lock #include <iostream> #include <string.h> #include <queue> #include <stdio.h> using namespace std; int main() { int l, u, rr, cases = 0; while (cin >> l >> u >> rr && (l || u || rr)) { cases++; int r[10]; for (int i = 0; i < rr; i++) cin >> r[i]; int T[10000]; memset(T, 127, sizeof(T)); queue<int> q; q.push(l); T[l] = 0; bool found = false; while (!q.empty() && !found) { int f = q.front(); q.pop(); for (int i = 0; i < rr; i++) { int j = (f + r[i]) % 10000; if (T[j] > T[f] + 1) { T[j] = T[f] + 1; q.push(j); if (j == u) { found = true; break; } } } } if (found) printf("Case %d: %d\n", cases, T[u]); else printf("Case %d: Permanently Locked\n", cases); } return 0; }
Monday, August 22, 2016
UVa 12160 - Unlock the Lock
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment