HDOJ 5487 Difference of Languages
2015-09-28 15:17
295 查看
记dp[i][j] 代表走到了第一个dfa的i号节点,走到了第二个自动机的j号节点.....然后就可以转移了......
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int maxn = 1005; struct node { int s1, s2, pre, tran; node(int s1 = 0, int s2 = 0, int tran = 0, int pre = 0) : s1(s1), s2(s2), tran(tran), pre(pre) {} }; node q[maxn * maxn]; int visa[maxn], visb[maxn]; bool vis[maxn][maxn]; int ga[maxn][26], gb[maxn][26]; char s[100]; int res[maxn * maxn]; int check(int s1, int s2) { return (visa[s1] ^ visb[s2]); } bool bfs() { int l = 0, r = 0; q[r++] = node(0, 0, 0, -1); vis[0][0] = 1; memset(vis, 0, sizeof vis); while(l < r) { int s1 = q[l].s1, s2 = q[l].s2; l++; int t = check(s1, s2); if(t == 1) { int cnt = 0, t = l-1; while(q[t].pre != -1) { res[cnt++] = q[t].tran; t = q[t].pre; } for(int i = cnt-1; i >= 0; i--) printf("%c", res[i] + 'a'); return true; } for(int i = 0; i < 26; i++) { int ns1 = ga[s1][i]; int ns2 = gb[s2][i]; if(!vis[ns1][ns2]) vis[ns1][ns2] = 1, q[r++] = node(ns1, ns2, i, l-1); } } return false; } void work() { int n1, n2, m1, m2, k1, k2; scanf("%d%d%d", &n1, &m1, &k1); for(int i = 0; i <= n1; i++) { visa[i] = false; for(int j = 0; j < 26; j++) ga[i][j] = n1; } for(int i = 1; i <= k1; i++) { int x; scanf("%d", &x); visa[x] = true; } for(int i = 1; i <= m1; i++) { int u, v; scanf("%d%d%s", &u, &v, s); ga[u][s[0] - 'a'] = v; } scanf("%d%d%d", &n2, &m2, &k2); for(int i = 0; i <= n2; i++) { visb[i] = false; for(int j = 0; j < 26; j++) gb[i][j] = n2; } for(int i = 1; i <= k2; i++) { int x; scanf("%d", &x); visb[x] = true; } for(int i = 1; i <= m2; i++) { int u, v; scanf("%d%d%s", &u, &v, s); gb[u][s[0] - 'a'] = v; } if(!bfs()) printf("0"); printf("\n"); } int main() { int _; scanf("%d", &_); for(int i = 1; i <= _; i++) { printf("Case #%d: ", i); work(); } return 0; }
相关文章推荐
- JavaScript高级程序设计之面向对象的程序设计之继承之寄生组合式继承第6.3.6讲笔记
- jquery 动态的添加数据,获取动态的数据
- What is the difference between a soft reference and a weak reference in Java?
- JS写的一个日期选择控件(移动网页的),写得不当的地方,望各位大神指正
- Js 实现图片放大功能
- Htmlparser Filter
- JavaScript高级程序设计之面向对象的程序设计之继承之寄生式继承第6.3.5讲笔记
- JavaScript多图片上传案例
- 转载:(个人学习用)JSP文件过大编译失败,异常如is exceeding the 65535 bytes l...
- JSON数组操作
- 百度2014前端笔试题
- 源码版本管理gitcafe(已经迁移到coding)
- [LeetCode]题解(python):019-Remove Nth Node From End of List
- JavaScript高级程序设计之面向对象的程序设计之继承之原型式继承第6.3.4讲笔记
- Struts2中,使用JQuery下的AJAX出现的“unexpected token <”错误
- avalon前端js直接通过ajax请求传一个对象到后台
- JavaScript高级程序设计之面向对象的程序设计之继承之组合继承第6.3.3讲笔记
- HDFS 2.x 使用经验
- (三)我的JavaScript系列:不同调用方式的this指向
- JavaScript判断FileUpload控件上传文件类型