【链接】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. HMACSHA256 Class

    https://msdn.microsoft.com/en-us/library/system.security.cryptography.hmacsha256(v=vs.110).aspx Comp ...

  2. legend---六、php脚本变量的生命周期是怎样的

    legend---六.php脚本变量的生命周期是怎样的 一.总结 一句话总结:应该是脚本结束变量的生命周期就完了 1.外部js找不到元素是怎么回事? 1 function myDailyTaskFin ...

  3. BootstrapDialog模态框

    5最近是比较烦直接使用Bootstrap里面的模态框,满屏都是模态框代码,看得心烦.然后想起以前使用的BootstrapDialog.show()的方式,挺简单好用的.然后就拿出来分享一下. 1.下载 ...

  4. sql的四大函数

    字符串函数: 1.charindex(字符串表达式 1, 字符串表达式2[,整数表达式]) select charindex('ab','BCabTabD')返回 3 select charindex ...

  5. C++中全局变量的声明和定义

    原文链接:http://blog.csdn.net/candyliuxj/article/details/7853938 (1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文 ...

  6. jQuery获取区间随机数

    1.自定义函数 function getRandom(min,max){    //x上限,y下限    var x = max;    var y = min;    if(x<y){     ...

  7. Eclipse怎么导入外来项目

    从File中点击------>import----->General------>然后按下面的图片显示

  8. strongSwan IKEv2服务器配置

    strongSwan IKEv2服务器配置 资料来源 https://www.cl.cam.ac.uk/~mas90/resources/strongswan/ 经过大量的反复试验,我配置了一个str ...

  9. linearlayout-weight 属性作用

    今天用到了weight的属性,现在就把这个属性的具体意义记录一下.也是参考网上的讲解,只不过自己验证了一下而已 参考自 http://blog.csdn.net/jincf2011/article/d ...

  10. android图像处理系列之四-- 给图片添加边框(上)

    图片处理时,有时需要为图片加一些边框,下面介绍一种为图片添加简单边框的方法. 基本思路是:将边框图片裁剪成八张小图片(图片大小最好一致,不然后面处理会很麻烦),分别对应左上角,左边,左下角,下边,右下 ...