// aarifshuvo ``CSEJU
#include <bits/stdc++.h>
#define ll long long
#define SZ(x) ((int)(x).size())
#define scl(x) scanf("%lld", &x)
#define scll(x,y) scanf("%lld %lld", &x, &y)
#define ALL(x) (x).begin(),(x).end()
#define REP(i,n) for(int i=0;i<n;i++)
#define REV(i,n) for(int i=n-1;i>=0;i--)
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define pri(a) cout<<a<<endl
#define prii(a,b) cout<<a<<" "<<b<<endl
using namespace std;
ll t,r,c;
string sa[100007];
struct DT
{
int freq;
char letter;
}arr[30];
int cnt[27],id;
char ch;
bool cmp(DT a, DT b)
{
if(a.freq!=b.freq) return a.freq>b.freq;
else return a.letter<b.letter;
}
void dfs(int i, int j)
{
if(i<0 or j<0 or i==r or j==c or sa[i][j]=='@') return;
if(ch==sa[i][j])
sa[i][j]='@';
else return;
dfs(i,j+1);
dfs(i,j-1);
dfs(i-1,j);
dfs(i+1,j);
}
int main()
{
scl(t);
FOR(cs,1,t)
{
memset(cnt,0,sizeof cnt);
scll(r,c);
REP(i,r) cin>>sa[i];
REP(i,r)
{
REP(j,c)
{
if(sa[i][j]!='@')
{
cnt[sa[i][j]-'a']++;
ch = sa[i][j];
dfs(i,j);
}
}
}
int id=0;
REP(i,26)
{
if(cnt[i]) arr[id].letter= i+'a', arr[id].freq=cnt[i], id++;
}
sort(arr,arr+id,cmp);
printf("World #%d\n", cs);
REP(i,id)
{
printf("%c: %d\n", arr[i].letter, arr[i].freq);
}
}
return 0;
}
No comments:
Post a Comment