usaco2.1.1-----the castle(flood fill模型)

/*
ID:lvfuan11
PROG:castle
LANG:C++

translation:	见usanocow
solution:
	flood fill的经典模型。dfs即可。注意题目要求选择最靠西边的墙,意味着同一个各自内,该格的北墙的优先级是比西墙高的!
	因为北墙更靠近西边。
*/
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;
const int maxn = 55;
const int dir_row[] = {-1, 1, 0, 0};
const int dir_col[] = {0, 0, -1, 1};	//上下左右

int mat[maxn][maxn], n, m;
int vis[maxn][maxn], area[maxn*maxn];
bool wall[maxn][maxn][4];

bool isWall(int r, int c, int d)
{
	if(d == 0 && mat[r][c] & 2)	return true;
	if(d == 1 && mat[r][c] & 8)	return true;
	if(d == 2 && mat[r][c] & 1)	return true;
	if(d == 3 && mat[r][c] & 4)	return true;
	return false;
}


inline bool inside(int x, int y)
{
	return x >= 0 && x < n && y >= 0 && y < m;
}

void dfs(int r, int c, int tag)
{
	vis[r][c] = tag;
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值