HDOJ 5487 Difference of Languages

记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;
}


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值