【链接】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. BZOJ 1230 Usaco2008 Nov 开关灯 线段树

    思路: 用线段树模拟题中的操作就好 (标记异或 长度=区间总长度-当前已开灯的长度) //By SiriusRen #include <cstdio> using namespace st ...

  2. 关键字&标识符

    关键字:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) 保留字: 标识符:凡是自己可以起名字的地方都叫标识符 命名的规则:(一定要遵守,不遵守就会报编译的错误)由26个英文字母大小写,0- ...

  3. JAVA线程队列BlockingQueue

    JAVA线程队列BlockingQueue 介绍 BlockingQueue阻塞队列,顾名思义,首先它是一个队列,通过一个共享的队列,可以使得数据由队列的一端输入,从另外一端输出. 常用的队列主要有以 ...

  4. 使用java自带的xml解析器解析xml

    使用java自带的xml解析器解析xml,其实我不推荐,可以用Dom解析,或其他的方式,因为Java自带的解析器使用不但麻烦,且还有bug出现. 它要求,针对不同的xml(结构不同),必须写对应的ha ...

  5. 威联通212P 在admin用户密码正确情况下仍然无法登录WEB页面解决办法

    *登录 telnet 执行以下语句: [~] # cp /etc/default_config/passwd /mnt/HDA_ROOT/.config/passwd[~] # cp /etc/def ...

  6. try{futureGirl}catch(Exception){"Kill All Trouble"}——echarts样式

    首先先给未来女,解释一下题目吧.这是段代码,我再try{}括号里写了你,意思我会保护你.后面的catch(Exception)是捕捉你的所有麻烦,交给我解决. 今天收工较早,拖着疲惫是身躯回到宿舍,简 ...

  7. 洛谷 P1239 计数器

    P1239 计数器 题目描述 一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2,…,9.其中—个页码不含多余的0,如N=1234时第5页不是0005,只是5. 输入输出格式 ...

  8. crontab FAQ

    1.crontab变量问题 crontab中的脚本须要引入系统变量才干找到,否则crontab中的命令找不到系统变量,或者都写绝对路径. 2.1分钟运行一次 */1 * * * * /etc/keep ...

  9. iOS8开发~Swift(五)Swift与OC混编

    一.概要 首先看<The Swift Programming Language>中提到"Swift's compatibility with Objective-C lets y ...

  10. RvmTranslator6.0 - Dassault Systemes 3DXML

    RvmTranslator6.0 - Dassault Systemes 3DXML eryar@163.com 1. Introduction RvmTranslator can translate ...