输入样例1(对应图1):
8
A 1 2
B 3 4
C 5 -
D - -
E 6 -
G 7 -
F - -
H - -
8
G - 4
B 7 6
F - -
A 5 1
H - -
C 0 -
D - -
E 2 -
输出样例1:
Yes
输入样例2(对应图2):
8
B 5 7
F - -
A 0 3
C 6 -
H - -
D - -
G 4 -
E 1 -
8
D 6 -
B 5 -
E - -
H - -
C 0 2
G - 3
F - -
A 1 4
输出样例2:
No
分析:
代码:
#include<iostream>
#include<map>
using namespace std;
int f[10],a[10],b[10],c[10];
map<char,int>p;
int main(){
int n1; cin>>n1;
for(int i=1;i<=n1;i++){
char op,x,y; getchar();
scanf("%c %c %c",&op,&x,&y);
p[op]=i;
if(x>=48&&x<=57) a[x-'0'+1]=i;
if(y>=48&&y<=57) a[y-'0'+1]=i;
}
int flag=0;
int n2; cin>>n2;
for(int i=1;i<=n2;i++){
char op,x,y; getchar();
scanf("%c %c %c",&op,&x,&y);
if(!p[op]) flag=1;
f[i]=p[op];
if(x>=48&&x<=57) b[x-'0'+1]=i;
if(y>=48&&y<=57) b[y-'0'+1]=i;
}
if(n1!=n2||flag){
printf("No"); return 0;
}
flag=0;
for(int i=1;i<=n2;i++){
if(f[b[i]]!=a[f[i]]){
// printf("%d %d %d %d %d\n",i,b[i],f[i],f[b[i]],a[f[i]]);
flag=1;
}
}
if(flag) printf("No");
else printf("Yes");
return 0;
}