```
#include<bits/stdc++.h>
using namespace std;
char a[30][110];
int k[10001],n,vis[10001];
int dfs(int i){
if(k[i]) return k[i];
int len=strlen(a[i]),ans=0;
for(int j=1;j<=n;j++){
if(j!=i&&a[j][0]==a[i][len-1]&&vis[j]==0){
vis[j]=1;
ans=max(ans,dfs(j));
vis[j]=0;
}
}
k[i]=ans+len;
return k[i];
}
int main(){
memset(vis,0,sizeof(vis));
memset(k,0,sizeof(k));
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int ans=0;
for(int i=1;i<=n;i++){
vis[i]=1;
ans=max(ans,dfs(i));
vis[i]=0;
}
cout<<ans<<endl;
return 0;
}
by cinbingg @ 2020-08-04 08:16:10
一样 我也错了两个点
by cinbingg @ 2020-08-04 08:16:30