【链接】http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=775&pid=1006


【题意】


在这里写题意

【题解】


先找出最外围的0,把那些0都去掉.
从(0,0)开始广搜,这样就能把整个外围都去掉了;
(注意要把这些0去掉)
(图是存在(1,1)~(n,m)里面的)
然后找(1,1)~(n,m)里面的1的联通块个数.
再找0的联通块个数.(在去掉外围的0之后)
(这个时候0只能是1联通块里面的联通块了.或者干脆就找不到了)
然后看看1的联通块个数是不是1,是1的话,看0的联通块个数;
个数为0的话,就是0,否则是1.

【错的次数】


0

【反思】


在这了写反思

【代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define ri(x) scanf("%d",&x)
#define rl(x) scanf("%lld",&x)
#define rs(x) scanf("%s",x+1)
#define oi(x) printf("%d",x)
#define ol(x) printf("%lld",x)
#define oc putchar(' ')
#define os(x) printf(x)
#define all(x) x.begin(),x.end()
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 110; int n,m;
char s[N][N];
bool vis[N][N];
queue <pii> dl; int main(){
    //Open();
    //Close();
    while (~ri(n)){
        ms(vis,0);
        ri(m);
        rep1(i,1,n) rs(s[i]);         dl.push(mp(0,0));
        while (!dl.empty()){
            int x = dl.front().first,y = dl.front().second;
            dl.pop();
            rep1(i,1,4){
                int tx = x + dx[i],ty = y + dy[i];
                if (tx >= 0 && tx <= n+1 && ty >= 0 && ty <= m+1){
                    if (!vis[tx][ty]){
                        if (tx >=1 && tx <= n && ty >= 1 && ty <= m)
                            if (s[tx][ty]=='1') continue;
                        vis[tx][ty] = 1;
                        dl.push(mp(tx,ty));
                    }
                }
            }
        }
        //return 0;         int nei1 = 0;
        rep1(i,1,n)
            rep1(j,1,m)
                if (s[i][j]=='1' && !vis[i][j]){
                    nei1++;
                    vis[i][j] = 1;
                    dl.push(mp(i,j));
                    while (!dl.empty()){
                        int x = dl.front().first,y = dl.front().second;
                        dl.pop();
                        rep1(i,1,4){
                            int tx = x + dx[i],ty = y + dy[i];
                            if (tx >= 1 && tx <= n && ty >= 1 && ty <= m){
                                if (s[tx][ty]=='1' && !vis[tx][ty]){
                                    vis[tx][ty] = 1;
                                    dl.push(mp(tx,ty));
                                }
                            }
                        }
                    }
                }         if (nei1==0 || nei1 > 1){
            puts("-1");
            continue;
        }         int nei0 = 0;
        rep1(i,1,n)
            rep1(j,1,m)
                if (s[i][j]=='0' && !vis[i][j]){
                    nei0++;
                    vis[i][j] = 1;
                    dl.push(mp(i,j));
                    while (!dl.empty()){
                        int x = dl.front().first,y = dl.front().second;
                        dl.pop();
                        rep1(i,1,4){
                            int tx = x + dx[i],ty = y + dy[i];
                            if (tx >= 1 && tx <= n && ty >= 1 && ty <= m){
                                if (s[tx][ty]=='0' && !vis[tx][ty]){
                                    vis[tx][ty] = 1;
                                    dl.push(mp(tx,ty));
                                }
                            }
                        }
                    }
                }         if (nei1 == 1 && nei0 == 1){
            puts("0");
            continue;
        }
        if (nei1 == 1 && nei0 == 0){
            puts("1");
            continue;
        }
        puts("-1");
    }
    return 0;
}

【2017"百度之星"程序设计大赛 - 初赛(A)】度度熊的01世界的更多相关文章

  1. 2017"百度之星"程序设计大赛 - 资格赛 1002 度度熊的王国战略

    全局最小割 Stoer-Wagner (SW算法)优化 优化吃藕了,感谢放宽时限,感谢平板电视 (pb_ds) #include <iostream> #include <cstdi ...

  2. HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017"百度之星"程序设计大赛 - 初赛(B))

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. HDU 6119 小小粉丝度度熊 【预处理+尺取法】(2017"百度之星"程序设计大赛 - 初赛(B))

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  4. HDU 6114 Chess 【组合数】(2017"百度之星"程序设计大赛 - 初赛(B))

    Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  5. HDU 6109 数据分割 【并查集+set】 (2017"百度之星"程序设计大赛 - 初赛(A))

    数据分割 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. HDU 6108 小C的倍数问题 【数学】 (2017"百度之星"程序设计大赛 - 初赛(A))

    小C的倍数问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. HDU 6122 今夕何夕 【数学公式】 (2017"百度之星"程序设计大赛 - 初赛(A))

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))

    度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. 2017"百度之星"程序设计大赛 - 初赛(A) [ hdu 6108 小C的倍数问题 ] [ hdu 6109 数据分割 ] [ hdu 6110 路径交 ] [ hdu 6112 今夕何夕 ] [ hdu 6113 度度熊的01世界 ]

    这套题体验极差. PROBLEM 1001 - 小C的倍数问题 题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6108 (2017"百度之星 ...

  10. [SinGuLaRiTy] 2017 百度之星程序设计大赛 初赛A

    [SinGuLaRiTy-1036] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 小C的倍数问题 Time Limit: 2000/100 ...

随机推荐

  1. 12.ng-switch

    转自:https://www.cnblogs.com/best/tag/Angular/ 根据作用域表达式动态切换把那个DOM元素包含在已经编译的模板中. 示例代码: <!DOCTYPE htm ...

  2. POJ 3087 模拟+hash

    也可以用map来搞 样例推出来 就没啥问题了 (先读的是B 然后是A 被坑好久) //By SiriusRen #include <cstdio> #include <iostrea ...

  3. 外连接OUTER JOIN(三十五)

    外连接OUTER JOIN   LEFT [OUTER] JOIN,左外连接 显示左表的全部记录及右表符合连接条件的记录 下面我们来演示一下,操作命令及部分结果如下: SELECT goods_id, ...

  4. Android控件-单选按钮RadioButton

    RadioGroup单选按钮用法,还是先看效果图 先中后,点RadioGroup测试按钮,可在标题栏显示选择结果,点清除可以清除选择.下面上代码,main.xml: <RadioGroup an ...

  5. Ubuntu16.04+Gnome3 锁定屏幕快捷键无效解决办法

    Ubuntu16.04 桌面环境通过Ubuntu server和后安装的Gnome3 桌面环境实现,安装完以后发现锁定屏幕快捷键无效,系统设置=>键盘=>快捷中 锁屏快捷键已经存在Supe ...

  6. tensorflow学习之路-----MNIST数据

    ''' 神经网络的过程:1.准备相应的数据库 2.定义输入成 3.定义输出层 4.定义隐藏层 5.训练(根据误差进行训练) 6.对结果进行精确度评估 ''' import tensorflow as ...

  7. CentOS 7上安装gitlab-runner

    1.yum install gitlab-runner -y 2.Registering Runners a.Run the following command: gitlab-runner regi ...

  8. 这是一套Java菜鸟到大牛的学习路线之高级教程,由工作了10年的资深Java架构师整理。

    这是一套Java菜鸟到大牛的学习路线之高级教程,由工作了10年的资深Java架构师整理.        01-java高级架构师设计-基础深入        J2SE深入讲解        Java多 ...

  9. 稀疏表示字典的显示(MATLAB实现代码)

    本文主要是实现论文--基于稀疏表示的图像超分辨率<Image Super-Resolution Via Sparse Representation>中的Figure2.通过对100000个 ...

  10. Javascript和jquery事件--事件冒泡和事件捕获

    jQuery 是一个 JavaScript 库,jQuery 极大地简化了 JavaScript 编程,在有关jq的描述中,jq是兼容现有的主流浏览器,比如谷歌.火狐,safari等(当然是指较新的版 ...