UVA658It'sNotABug,It'sAFeature!
来源:互联网 发布:元旦网络营销策划方案 编辑:程序博客网 时间:2024/06/08 06:35
//UVA658It'sNotABug,It'sAFeature!#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn = 20;const int maxm = 100 + 10;const int INF = 1000000000;char before[maxm][maxn + 5], after[maxm][maxn + 5];int n, m;int t[maxm], dis[1 << maxn];bool vis[1 << maxn];struct Node {int bug, dist;bool operator < (const Node& rhs) const { return dist > rhs.dist;}};int solve() {//Dijkstrapriority_queue<Node> q;for(int i = 0; i < (1 << n); i++) { vis[i] = 0; dis[i] = INF; }Node start;start.bug = (1 << n) - 1;start.dist = 0;dis[start.bug] = 0;q.push(start);while(!q.empty()) {Node u = q.top(); q.pop();if(vis[u.bug]) continue;vis[u.bug] = 1;if(u.bug == 0) return u.dist;for(int i = 0; i < m; i++) {bool op = true;for(int j = 0; j < n; j++) {if(before[i][j] == '+' && !(u.bug & (1 << j))) {op = false; break;}if(before[i][j] == '-' && (u.bug & (1 << j))) {op = false; break;}}if(!op) continue;Node u2 = u;u2.dist = u.dist + t[i];for(int j = 0; j < n; j++) {if(after[i][j] == '+') u2.bug |= (1 << j);if(after[i][j] == '-') u2.bug &= ~(1 << j);}int& d = dis[u2.bug];if(dis[u2.bug] == INF || u2.dist < d) {d = u2.dist;q.push(u2);}}}return -1;}int main() { int kase = 0;while(scanf("%d%d", &n, &m) == 2 && n) {//memset(vis, 0, sizeof(vis)); for(int i = 0; i < m; i++) scanf("%d%s%s", &t[i], before[i], after[i]); int ans = solve(); printf("Product %d\n", ++kase); if(ans < 0) printf("Bugs cannot be fixed.\n\n"); else printf("Fastest sequence takes %d seconds.\n\n", ans); }return 0;}/*3 31 000 00-1 00- 0-+2 0-- -++4 17 0-0+ ----0 0*/
阅读全文
0 0
- UVA658It'sNotABug,It'sAFeature!
- IT
- it
- IT
- it
- IT
- IT
- IT
- IT
- IT
- IT
- IT
- IT
- IT
- IT
- IT
- it
- IT
- Kotlin入门篇(六),list和map的使用
- cookie,session,token
- 14.进程和信号
- linux
- ListView使用SimpleAdapter适配器
- UVA658It'sNotABug,It'sAFeature!
- 【数据结构】迷宫(递归)
- jvm学习记录:GC
- 如何在Virtualbox的Ubuntu14.04系统中建立共享文件夹
- 学习Java注解及简单应用栗子
- SQL 基础教程
- 6.背景属性
- 如何解决秒杀的性能问题和超卖的讨论
- RabbitMQ --- Publish-Subscribe(发布-订阅)