Codeforces Round #486 (Div. 3) B:Substrings Sort
阿新 • • 發佈:2018-12-24
Note
In the second example you cannot reorder the strings because the string "abab" is not a substring of the string "abacaba".
這個題剛開始計劃使用AC自動機,剛開始排序,然後使用string.find相鄰之間進行比較,若第一個是第二個的子串,第二個又是第三個的子串,那麼第一個自然就是第三個的子串了。
#include<bits/stdc++.h> using namespace std; typedef pair<int,string>PII; vector<PII>v; int main() { int n; string temp; scanf("%d",&n); for(int i=0;i<n;i++){ cin>>temp; v.push_back(make_pair(temp.length(),temp)); } sort(v.begin(),v.end()); for(int i=0;i<n-1;i++){ if(v[i+1].second.find(v[i].second)==string::npos){ cout<<"NO"; return 0; } } cout<<"YES"<<endl; for(int i=0;i<n;i++){ cout<<v[i].second<<endl; } return 0; }