搜索代码(很拙劣)4WA
#include <bits/stdc++.h>
using namespace std;
#define N 1020
#define ll long long
#define lb i&(-i)
#define lt p*2
#define rt p*2+1
string s[N];
vector<string>q(N);
int n;
unordered_map<string,bool>v;
void dfs(int d)
{
if(d==n+1)
{
for(int i=0;i<n-1;i++) cout<<q[i]<<".";
cout<<q[n-1];
exit(0);
}
for(int i=1;i<=n;i++)
{
if(v[s[i]]) continue;
if(d==1)
{
v[q[d-1]]=0;
q[d-1]=s[i];
v[s[i]]=1;
dfs(d+1);
}
else
{
string ed=q[d-2];
if(s[i][0]==ed[ed.size()-1])
{
v[q[d-1]]=0;
q[d-1]=s[i];
v[s[i]]=1;
dfs(d+1);
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s[i];
}
sort(s+1,s+1+n);
dfs(1);
cout<<"***";
return 0;
}