Advertisement
Emiliatan

d365

Mar 29th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. /* d365            */
  2. /* AC (0ms, 348KB) */
  3. #include <iostream>
  4. #include <string.h>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. int H,W;
  10. bool found[100][100];
  11. char Map[100][100];
  12.  
  13. typedef struct com
  14. {
  15.     char ch;
  16.     int cnt=0;
  17. }Com;
  18.  
  19. Com arr[30];
  20.  
  21. inline bool cmp(const Com &a,const Com &b)
  22. {
  23.     if(a.cnt==b.cnt) return a.ch<b.ch;
  24.     return a.cnt>b.cnt;
  25. }
  26.  
  27. inline bool in(const int &i,const int &j) {return i>=0&&i<H&&j>=0&&j<W;}
  28.  
  29. inline void dfs(int i,int j)
  30. {
  31.     found[i][j]=true;
  32.     if(in(i-1,j)&&Map[i-1][j]==Map[i][j]&&!found[i-1][j]) dfs(i-1,j);
  33.     if(in(i+1,j)&&Map[i+1][j]==Map[i][j]&&!found[i+1][j]) dfs(i+1,j);
  34.     if(in(i,j-1)&&Map[i][j-1]==Map[i][j]&&!found[i][j-1]) dfs(i,j-1);
  35.     if(in(i,j+1)&&Map[i][j+1]==Map[i][j]&&!found[i][j+1]) dfs(i,j+1);
  36. }
  37.  
  38. int main()
  39. {
  40.     ios_base::sync_with_stdio(false);
  41.     cin.tie(0);
  42.  
  43.     int n;
  44.  
  45.     cin>>n;
  46.     for(int t=1;t<=n&&cin>>H>>W;t++)
  47.     {
  48.         memset(found,false,sizeof(found));
  49.  
  50.         for(int i=0;i<H;i++)
  51.             for(int j=0;j<W;j++)
  52.                 cin>>Map[i][j];
  53.  
  54.         for(int i=0;i<26;i++) {arr[i].ch=i+'a'; arr[i].cnt=0;}
  55.  
  56.         for(int i=0;i<H;i++)
  57.             for(int j=0;j<W;j++)
  58.                 if(!found[i][j]) {arr[Map[i][j]-'a'].cnt++;dfs(i,j);}
  59.  
  60.         cout<<"World #"<<t<<'\n';
  61.  
  62.         sort(arr,arr+26,cmp);
  63.  
  64.         for(int i=0;i<26;i++)
  65.             if(arr[i].cnt) cout<<arr[i].ch<<": "<<arr[i].cnt<<'\n';
  66.     }
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement