#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int dirx[]={1,-1,0,0};
int diry[]={0,0,1,-1};//right,left,up,down
int n;
vector<vector<char> > a;
vector<vector<int> > vis;
int flood(int i,int j){
if(i<0||i==n||j<0||j==n||vis[i][j]||a[i][j]=='.') return 0;
vis[i][j]=1;
flood(i+dirx[0],j+diry[0]);
flood(i+dirx[1],j+diry[1]);
flood(i+dirx[2],j+diry[2]);
flood(i+dirx[3],j+diry[3]);
return 1;
}
int main(){
int t,cs=0;
cin>>t;
while(t--){
cin>>n;
a.assign(n,vector<char>(n));
vis.assign(n,vector<int>(n));
for(int i=0;i<n;i++){
cin>>ws;
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(a[i][j]=='x')
ans+=flood(i,j);
}
}
cout<<"Case "<<++cs<<": "<<ans<<endl;
}
}
#include <vector>
#include <iostream>
using namespace std;
int dirx[]={1,-1,0,0};
int diry[]={0,0,1,-1};//right,left,up,down
int n;
vector<vector<char> > a;
vector<vector<int> > vis;
int flood(int i,int j){
if(i<0||i==n||j<0||j==n||vis[i][j]||a[i][j]=='.') return 0;
vis[i][j]=1;
flood(i+dirx[0],j+diry[0]);
flood(i+dirx[1],j+diry[1]);
flood(i+dirx[2],j+diry[2]);
flood(i+dirx[3],j+diry[3]);
return 1;
}
int main(){
int t,cs=0;
cin>>t;
while(t--){
cin>>n;
a.assign(n,vector<char>(n));
vis.assign(n,vector<int>(n));
for(int i=0;i<n;i++){
cin>>ws;
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(a[i][j]=='x')
ans+=flood(i,j);
}
}
cout<<"Case "<<++cs<<": "<<ans<<endl;
}
}
Comments
Post a Comment