博客
关于我
Codeforces Round #644 (Div. 3) E. Polygon(思维/dfs)
阅读量:315 次
发布时间:2019-03-04

本文共 1696 字,大约阅读时间需要 5 分钟。


在这里插入图片描述
首先不难发现发出的1肯定是先出现边界,然后1出现在和边界相连的1,一次向上或向左连接成连通块,那么我们考虑第一种做法:从所有的边界存在1的地方搜索,然后对连通块上的1进行标记。最后对整个 n × m n×m n×m的方阵中所有的1如果存在不被标记的就是NO,否则为YES

还有一种简单的方法:只需看除了边界的每一个1的右边或者下边是否有1,如果都合法则正确,否则错误

第一种方法:

#include <set>#include <map>#include <stack>#include <queue>#include <math.h>#include <cstdio>#include <string>#include <cstring>#include <sstream>#include <iostream>#include <algorithm>#include <unordered_map>using namespace std;#define lowbit(x) (x&(-x))typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> P;const double eps=1e-8;const double pi=acos(-1.0);const int inf=0x3f3f3f3f;const ll INF=1e18;const int Mod=1e9+7;const int maxn=2e5+10;int n;int a[105][105];bool vis[105][105];const int dx[]={   0,-1};const int dy[]={   -1,0};void dfs(int r,int c){       vis[r][c]=1;    if(a[r][c]==0) return;    for(int i=0;i<2;i++){           int x=r+dx[i],y=c+dy[i];        if(!vis[x][y] && r>=1 && r<=n && y>=1 && y<=n)            dfs(x,y);    }}int main(){       //freopen("in.txt","r",stdin);    //freopen("out.txt","w",stdout);    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);    int t;    char c;    cin>>t;    while(t--){           cin>>n;        memset(vis,0,sizeof vis);        for(int i=1;i<=n;i++)            for(int j=1;j<=n;j++){                   cin>>c;                a[i][j]=c-'0';            }        for(int i=1;i<=n;i++)            if(!vis[n][i] && a[i][n]) dfs(i,n);        for(int i=1;i<=n;i++)            if(!vis[n][i] && a[n][i]) dfs(n,i);        int flag=0;        for(int i=1;i<=n;i++)            for(int j=1;j<=n;j++){                   if(!vis[i][j] && a[i][j]) flag=1;            }        if(flag) cout<<"NO\n";        else cout<<"YES\n";    }    return 0;}

转载地址:http://iuqq.baihongyu.com/

你可能感兴趣的文章
Vue——父组件将方法传递给子组件
查看>>
文件加密软件对于企业发展而言有何优势?局域网数据防泄密工作应该如何入手?
查看>>
Beautiful Soup基础入门
查看>>
点击控制盒子移动
查看>>
js求阶乘
查看>>
小程序图片正确使用方式(防止发布之后不显示)
查看>>
C++基础学习笔记08——模板
查看>>
Java学习
查看>>
Js函数
查看>>
Python机器学习算法基础概述
查看>>
关于OCR的一些有用的技术博客文章链接
查看>>
jquery中用on事件委托的方式绑定事件
查看>>
蓝桥杯 2016c/c++A组 方格填数
查看>>
L1-039 古风排版 (20分)
查看>>
L1-009 N个数求和 (20 分)
查看>>
L2-031 深入虎穴 (25 分)
查看>>
Unity之PlayerPrefs
查看>>
简单的xml读取存储方法(未优化)
查看>>
Making the grade 和Sonya and Problem Wihtout a Legend
查看>>
Flower
查看>>