fork download
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<vector>
  4. #include<cstring>
  5. #include<string>
  6. #include<algorithm>
  7. using namespace std;
  8.  
  9. vector<vector<string> > res;
  10.  
  11. bool isAnagram(string s1,string s2){
  12. int A[30];
  13. memset(A,0,sizeof(A));
  14. int size1=s1.size();
  15. int size2=s2.size();
  16. if(size1!=size2) return false;
  17. for(int i=0;i<size1;i++){ A[s1[i]-'a']++; A[s2[i]-'a']--;}
  18. for(int i=0;i<30;i++) if(A[i]!=0) return false;
  19. return true;
  20. }
  21.  
  22. int main(){
  23. int n;
  24. scanf("%d",&n);
  25. vector<string> V;
  26. string str;
  27. for(int i=0;i<n;i++){ cin>>str; V.push_back(str);}
  28. bool taken[n];
  29. memset(taken,false,sizeof(taken));
  30. int k=0;
  31. for(int i=0;i<n;i++){
  32. if(taken[i]) continue;
  33. taken[i]=true;
  34. res[k].push_back(V[i]);
  35. for(int j=0;j<n;j++){
  36. if(i==j) continue;
  37. if(taken[j]) continue;
  38. if(isAnagram(V[i],V[j])){ res[k].push_back(V[j]); taken[j]=true;}
  39. }
  40. ++k;
  41. }
  42. int r=res.size();
  43. for(int i=0;i<r;i++) sort(res[i].begin(),res[i].end());
  44. sort(res.begin(),res.end());
  45. for(int i=0;i<r;i++){
  46. for(int j=0;j<res[i].size();j++) cout<<res[i][j]<<" ";
  47. cout<<"\n";
  48. }
  49. return 0;
  50. }
Runtime error #stdin #stdout 0s 2704KB
stdin
Standard input is empty
stdout
Standard output is empty