The Tower of Babylon UVA-437(状態の説明、最長経路)

871 ワード

#include
using namespace std;
typedef long long ll;

const int maxn=100;
int mp[maxn][maxn];
int dp[maxn][3];

struct Martix{
	int val[3];
	Martix(){}
	Martix(int _a,int _b,int _c){
		val[0]=_a,val[1]=_b,val[2]=_c;
	}
}mat[maxn];
int n;
int t1[3],t2[3],v1[3],v2[3];

int check(int id1,int a,int id2,int b){
	memset(v1,0,sizeof(v1));
	memset(v2,0,sizeof(v2));
	v1[a]=1;v2[b]=1;
	int cnt=0;
	for(int i=0;i<3;i++){
		if(!v1[i]) t1[cnt++]=i;
	}
	cnt=0;
	for(int i=0;i<3;i++){
		if(!v2[i]) t2[cnt++]=i;
	}
	if(mat[id1].val[t1[0]]