二分答案+验证,注意一开始就不连通的话输出0

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std; const int maxn=+;
char s[maxn][maxn];
char tmp[maxn][maxn];
bool flag[maxn][maxn];
int dir[][]={
{,},
{,-},
{,},
{-,}
}; struct X
{
int x,y;
}q[maxn*maxn];
int n,m,Q; void read()
{
scanf("%d%d",&n,&m);
for(int i=;i<n;i++) scanf("%s",s[i]);
scanf("%d",&Q);
for(int i=;i<=Q;i++) scanf("%d%d",&q[i].x,&q[i].y);
} bool P(int a,int b)
{
if(a>=&&a<n)
{
if(b>=&&b<m)
{
if(tmp[a][b]=='')
{
if(flag[a][b]==)
{
return ;
}
}
}
}
return ;
} void dfs(int x,int y)
{
flag[x][y]=;
for(int i=;i<;i++)
{
int newx=x+dir[i][];
int newy=y+dir[i][];
if(P(newx,newy)) dfs(newx,newy);
}
} bool f(int year)
{
for(int i=;i<n;i++)
for(int j=;j<m;j++)
tmp[i][j]=s[i][j]; for(int i=;i<=year;i++) tmp[q[i].x][q[i].y]=''; bool fail=;
for(int j=;j<m;j++) if(tmp[][j]=='') fail=;
if(fail) return ; fail=;
for(int j=;j<m;j++) if(tmp[n-][j]=='') fail=;
if(fail) return ; memset(flag,,sizeof flag);
for(int j=;j<m;j++)
if(tmp[][j]=='')
dfs(,j); fail=;
for(int j=;j<m;j++)
if(tmp[n-][j]==''&&flag[n-][j]==) fail=;
return fail;
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
read();
if(f()) printf("0\n");
else
{
int ans=-;
int left=,right=Q;
while(left<=right)
{
int mid=(left+right)/;
if(f(mid))
{
ans=mid;
right=mid-;
}
else
{
left=mid+;
}
}
printf("%d\n",ans);
}
}
return ;
}

最新文章

  1. const 引起的BUG
  2. 在asp.net利用jquery.MultiFile实现多文件上传(转载)
  3. PHP 性能分析第三篇: 性能调优实战
  4. Java_Web___字符串转码String.getBytes()和new String()——(转)
  5. [PeterDLax著泛函分析习题参考解答]第3章 Hahn-Banach 定理
  6. [Locked] Best Meeting Point
  7. java版括号匹配检测
  8. StackExchange.Redis 使用-配置 (四)
  9. Python计算一个项目中含有的代码行数
  10. hibernate动态切换数据源
  11. 一、Snapman多人协作电子表格之——Snapman自我介绍
  12. 查表法解决calendar中月份及星期初始值为0的情况。
  13. MySQL5.7开多实例指导
  14. 【论文阅读】Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
  15. java.lang.ClassNotFoundException: com.sun.xml.ws.spi.ProviderImpl解决办法
  16. SQLyog中创建数据表及相关查询方法
  17. Oracle登录后提示ORA-12154:TNS:无法解析指定的连接标识符
  18. iOS高德地图使用-搜索,路径规划
  19. hdu 2049 不容易系列之考新郎 && 对错排的详解
  20. 统计nginx日志

热门文章

  1. ActionResult的其它返回值
  2. apicloud本地测试安卓测试包安装
  3. VS2010 自定义向导
  4. POJ1734/Floyd求最小环
  5. iOS5新特性: Core Image 示例
  6. AI 人工智能 探索 (二)
  7. HDU-1301 Jungle Roads(最小生成树[Prim])
  8. POJ 2289 Jamie&#39;s Contact Groups
  9. dfs和bfs的简单总结
  10. index.do为后缀的是什么开发语言? 有什么技术特点?