蒟蒻十几分钟xjb打出来的代码,明明是错的居然也过了!
#include <bits/stdc++.h>
#define lowbit(x) x&-x
using namespace std;
const int maxv=120000;
const int maxNum=0x7fffffff;
const double PI=3.1415927;
const double eps=1e-6;
const int mod=1e9+7;
typedef long long LL;
string str[maxv];
vector<string> ans;
int n,all[maxv],ch=200,ind[maxv],sum=0,inb[maxv],flag;
bool vis[maxv];
void dfs(char ch){
if(flag) return;
if(ans.size()==n){flag=1;return;}
for(int i=1;i<=n;i++)
if(!vis[i]&&str[i][0]==ch){
vis[i]=1,ans.push_back(str[i]),dfs(str[i][str[i].size()-1]);
if(flag) return;
vis[i]=0;ans.pop_back();
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>str[i],ch=min((int)str[i][0],ch);
if(str[i][0]!=str[i][str[i].size()-1]) ind[str[i][0]]++,inb[str[i][str[i].size()-1]]++;
}
sort(str+1,str+n+1);
for(int i=30;i<150;i++) if((ind[i]+inb[i])&1){ch=i;break;}
dfs((char)ch);
if(ans.size()!=n) cout<<"***";
else for(int i=0;i<ans.size();i++){
if(i) cout<<".";
cout<<ans[i];
}
return 0;
}
错误样例 2 ca aa
答案: 三个星
正确答案 ca.aa
建议加强数据!