我知道这道题判环。但是赛时没想出来+不会 bfs。所以全剧终。
打了 O(n) 的贪心。AC13,WA9。
主要思路就是每次看这个字符串和它斜边对应的字符串可不可以匹配上,如果全都匹配了,就输出 No,否则 Yes。
注意如果 n 是奇数的话还要反着判断一下。
#include<bits/stdc++.h>
using namespace std;
string s[2][100001];
int n,ans;
int main(){
ios::sync_with_stdio(0);
cin>>n;
for(int i = 1;i<=n;i++) cin>>s[0][i]>>s[1][i];
for(int i = 1;i<n;i++){
if(s[1][i]==s[0][i+1]) ans++;
}
if(n%2==1){
if(s[0][1]==s[1][n]) ans++;
}
if(ans==n) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
return 0;
}