博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA - 658 It's not a Bug, it's a Feature! (隐式图的最短路,位运算)
阅读量:5043 次
发布时间:2019-06-12

本文共 1188 字,大约阅读时间需要 3 分钟。

隐式的图搜索,存不下边,所以只有枚举转移就行了,因为bug的存在状态可以用二进制表示,转移的时候判断合法可以用位运算优化,

二进制pre[i][0]表示可以出现的bug,那么u&pre[i][0] == u就表示u是可以出现的bug集合的子集,

pre[i][1]表示必须出现的bug,那么u|pre[i][i] != u表示把必须出现的bug添加到u中,u中bug增加表面bug不全在u中,这是不合法的。

正权最短路就dijkstra,用spfa以前某题狂T有阴影。被输出格式坑得不要不要的,如果是if(kas) putchar('\n');就会WA...

#include
using namespace std;const int maxm = 100;const int maxn = 20;int pre[maxm][2],nxt[maxm][2];int cost[maxm];int n,m;int dist[1<
Node;#define fi first#define se second//bitset<20> temp;#define bug(u)\temp = u; cout<<#u<<'='<
<
dist[u]+cost[i]){ dist[v] = dist[u] + cost[i]; q.push(Node(dist[v],v)); } } } } puts("Bugs cannot be fixed.");}int main(){ //freopen("in.txt","r",stdin); int kas = 0; char s1[maxn+5],s2[maxn+5]; while(scanf("%d%d",&n,&m),n){ for(int i = 0; i < m ; i++){ scanf("%d%s%s",cost+i,s1,s2); nxt[i][0] = nxt[i][1] = pre[i][0] = pre[i][1] = 0; for(int j = 0; j < n; j++){ if(s1[j] == '+') pre[i][1] |= 1<

 

转载于:https://www.cnblogs.com/jerryRey/p/4758954.html

你可能感兴趣的文章
UVa 11636 (注意读题) Hello World!
查看>>
find搜索文件系统,实时搜索
查看>>
【BZOJ3052】[wc2013]糖果公园 带修改的树上莫队
查看>>
Bootstrap 输入组
查看>>
hdu1003(简单dp)
查看>>
hdu3054(斐波那契。。。。找规律)
查看>>
个人博客02
查看>>
Winform架构
查看>>
洛谷4248 AHOI2013差异 (后缀数组SA+单调栈)
查看>>
机器学习之三:过拟合与正则化
查看>>
词汇的理解 —— 汉译英(术语)
查看>>
OpenGl中使用着色器的基本步骤及GLSL渲染简单示例
查看>>
count 变量的使用
查看>>
OpenCV——高斯模糊与毛玻璃特效
查看>>
华为软件编程规范和范例
查看>>
LeetCode_Anagrams
查看>>
BZOJ-1026: [SCOI2009]windy数 (数位DP)
查看>>
linux管道学习(二)
查看>>
多线程传递多个参数
查看>>
.net 利用委托和线程解决窗体假死
查看>>