Discription은
다음 세 문자열에 동일한 길이 n의 A, B 및 C가 주어진다. 문자열은 소문자 영문으로 만 구성되어 있습니다. (A)의 i 번째 문자 B의 i 번째 문자가 양방향 인, 인공 지능되고, C의 i 번째 문자 CI이다.
하나가 인공 지능 또는 양방향으로 모든 들어 내가 (1≤i≤n) 당신은 (즉, 교환) CI를 교체해야합니다. 그래서 총에 당신은 그들 각각은 하나 ci↔ai 또는 ci↔bi (내가 1 및 N (포함) 사이의 모든 정수 반복 할), n 개의 스왑 작업을 수행 할 수 있습니다.
A는 "코드"입니다 예를 들어, B는 "참", c는 "도움", 당신은 1 일과에서 4 번째 문자와 B에서 다른 사람을 복용 C는 "크루"와 동일 할 수있다 . 이 방법으로는 "hodp"이되고 B는 "텔레"가된다.
이들 스왑 후 문자열 A가 문자열 B와 정확히 동일하게하는 것이 가능합니까?
입력
입력은 여러 개의 테스트 케이스로 구성되어 있습니다. 테스트 케이스의 수 - 첫 번째 행은 하나의 정수 t (1≤t≤100)을 포함한다. 테스트 케이스의 설명은 다음과 같습니다.
각 테스트 케이스의 첫 번째 줄은 소문자 영어 문자 A의 문자열을 포함합니다.
각 테스트 케이스의 두 번째 줄은 소문자 영어 문자 B의 문자열을 포함합니다.
각 테스트 케이스의 세 번째 줄은 소문자 영문자 C의 문자열을 포함합니다.
각 테스트 케이스에이 세 문자열이 비어있는 100을 초과하지 않는 동일한 길이를 가지고 있음을 보장한다.
출력
모든 테스트 케이스에 대한 답변 인쇄 t 라인. 각 테스트 케이스의 경우 :
그것이 따옴표없이 스트링 B 인쇄 "YES"로 동일한 문자열을 만들 수 있다면, 그렇지 따옴표없이 "NO"를 출력한다.
당신은 대답의 하나 소문자 나 대문자를 인쇄 할 수 있습니다.
예
입력
4
aaa
bbb
ccc
abc
bca
bca
aabb
bbaa
baba
imi
mii
iim
산출
NO
YES
YES
NO
참고
첫 번째 테스트의 경우, 해당 문자열 A가 정확히 문자열 B와 동일하게되도록 스왑을하는 것은 불가능합니다.
두 번째 테스트의 경우에, 당신은 가능한 모든 난에 대한 인공 지능과 CI를 교체해야합니다. A는 "BCA"가되는 스왑 후, B는 "BCA」이 C는"ABC "가된다. 여기서 문자열 A와 B는 동일하다.
세 번째 실험의 경우에는 A4와 B3 및 C4와 A1과 C1, B2와 C2, C3를 교환한다. 다음 문자열 A가 "바바"가 문자열 B "는 바바"가 문자열 (C)는 「ABAB "된다. 여기서 문자열 A와 B는 동일하다.
네 번째 실험의 경우에는, 해당 문자열 A가 정확히 스트링 B와 동일하게되도록 교환을 수행하는 것이 불가능하다.
문제의 의미는
세 개의 동일한 길이 (a)는 동작의 수행에 필요한 B, C, N 배 주어진 문자열 : 인공 지능 또는 BI 및 CI 교환을 수행해야한다.
동작을 n 회 B 후 Q. 문자열 문자열의 이용과 동일하다.
아이디어는
비트 i에서 분석, BI, CI 등을하지 않습니다 인공 지능 경우, 인공 지능 양방향 동일하지만, CI 및 인공 지능 및 BI가 동일하지 않을 경우 직접 확인, 사실이 아니다 확립되지 않습니다.
AC 코드
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define sd(n) scanf("%d", &n)
#define sdd(n, m) scanf("%d%d", &n, &m)
#define sddd(n, m, k) scanf("%d%d%d", &n, &m, &k)
#define sld(n) scanf("%lld", &n)
#define sldd(n, m) scanf("%lld%lld", &n, &m)
#define slddd(n, m, k) scanf("%lld%lld%lld", &n, &m, &k)
#define sf(n) scanf("%lf", &n)
#define sff(n, m) scanf("%lf%lf", &n, &m)
#define sfff(n, m, k) scanf("%lf%lf%lf", &n, &m, &k)
#define pd(n) printf("%d\n", (n))
#define pdd(n, m) printf("%d %d\n", n, m)
#define pld(n) printf("%lld\n", n)
#define pldd(n, m) printf("%lld %lld\n", n, m)
#define rep(i, a, n) for(int i=a; i<=n; i++)
#define per(i, n, a) for(int i=n; i>=a; i--)
int T;
string a,b,c;
int f;
int main()
{
scanf("%d",&T);
while(T--)
{
cin>>a>>b>>c;
f=0;
for(int i=0;i<a.size();i++)
{
if(a[i]!=b[i]&&a[i]!=c[i]&&b[i]!=c[i])
{
f=1;
break;
}
else if(a[i]==b[i]&&c[i]!=a[i]&&c[i]!=b[i])
{
f=1;
break;
}
}
if(f==1)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
return 0;
}