题意就不过多阐述了
题目链接
思路是 map存储出现过的字符串,每次比较前一个字符串的尾字符和后一个字符串的首字符
若出现违规情况则为false
否则为true
。
#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>
#define fi first
#define se second
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const int N = 1e5+10;
int n,m,T;
string st;
map<string,bool> mp;
int main()
{
ios;
cin >> T;
cin >> st;
T --;
char op = st[st.size()-1];
bool flag = 1;
mp[st] = true;
while(T --)
{
cin >> st;
if(mp[st]){
flag = 0;
}
mp[st] = true;
if(st[0] != op){
flag = 0;
}
else op = st[st.size()-1];
}
if(flag){
cout << "Yes" << endl;
}
else cout << "No" << endl;
// cout << " " << endl;
return 0;
}