第一次做的时候傻逼了。用了ac自动机,虽然刚开始ac了,但最后却被hack了,今天在早上醒来,看见别人写的代码,突然恍然大悟,原来这么简洁,stl就是强大,还是自己水平有限。
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<pair<int,string> > v;
int n;
cin>>n;
while(n--){
string s;
cin>>s;
v.push_back(make_pair(s.size(),s));
}
sort(v.begin(),v.end());
for(int i=1,len=v.size();i<len;i++){
if(v[i].second.find(v[i-1].second)==string::npos){ //find函数在找不到指定值得情况下会返回string::npos
cout<<"NO"<<endl;
return 0;
}
}
cout<<"YES"<<endl;
for(int i=0,len=v.size();i<len;i++){
cout<<v[i].second<<endl;
}
return 0;
}