Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* d365 */
- /* AC (0ms, 348KB) */
- #include <iostream>
- #include <string.h>
- #include <algorithm>
- using namespace std;
- int H,W;
- bool found[100][100];
- char Map[100][100];
- typedef struct com
- {
- char ch;
- int cnt=0;
- }Com;
- Com arr[30];
- inline bool cmp(const Com &a,const Com &b)
- {
- if(a.cnt==b.cnt) return a.ch<b.ch;
- return a.cnt>b.cnt;
- }
- inline bool in(const int &i,const int &j) {return i>=0&&i<H&&j>=0&&j<W;}
- inline void dfs(int i,int j)
- {
- found[i][j]=true;
- if(in(i-1,j)&&Map[i-1][j]==Map[i][j]&&!found[i-1][j]) dfs(i-1,j);
- if(in(i+1,j)&&Map[i+1][j]==Map[i][j]&&!found[i+1][j]) dfs(i+1,j);
- if(in(i,j-1)&&Map[i][j-1]==Map[i][j]&&!found[i][j-1]) dfs(i,j-1);
- if(in(i,j+1)&&Map[i][j+1]==Map[i][j]&&!found[i][j+1]) dfs(i,j+1);
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- int n;
- cin>>n;
- for(int t=1;t<=n&&cin>>H>>W;t++)
- {
- memset(found,false,sizeof(found));
- for(int i=0;i<H;i++)
- for(int j=0;j<W;j++)
- cin>>Map[i][j];
- for(int i=0;i<26;i++) {arr[i].ch=i+'a'; arr[i].cnt=0;}
- for(int i=0;i<H;i++)
- for(int j=0;j<W;j++)
- if(!found[i][j]) {arr[Map[i][j]-'a'].cnt++;dfs(i,j);}
- cout<<"World #"<<t<<'\n';
- sort(arr,arr+26,cmp);
- for(int i=0;i<26;i++)
- if(arr[i].cnt) cout<<arr[i].ch<<": "<<arr[i].cnt<<'\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement