题目链接:
http://codeforces.com/problemset/problem/225/B
大意:
地图上分布有小猪和狼,狼只能吃相邻的小猪且只能吃一个,求最多有多少小猪被吃。
思路:
遍历一遍就行,题目是很水的。。。但是自己图论太差,题目做太少看见图论专题都被吓死。
#include<bits/stdc++.h>
#define mem(s,t) memset(s,t,sizeof(s))
typedef long long ll;
using namespace std;
//#define LOCAL
int n,m;
const int MAXN =15;
char g[MAXN][MAXN];
int vis[MAXN][MAXN];
int cnt=0,row,col;
int main(){
#ifdef LOCAL
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
cin>>row>>col;
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
cin>>g[i][j];
vis[i][j]=1;
}
}
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
if(vis[i][j] && g[i][j]=='W'){
if(i<row-1 && g[i+1][j]=='P') cnt++,vis[i+1][j]=0;
else if(i>=1 && g[i-1][j]=='P') cnt++,vis[i-1][j]=0;
else if(j<col-1 && g[i][j+1]=='P') cnt++,vis[i][j+1]=0;
else if(j>=1 && g[i][j-1]=='P') cnt++,vis[i][j-1]=0;
}
}
}
cout<<cnt<<endl;
return 0;
}