【链接】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. Oracle数据库备份恢复,巡检须要关注的对象设置以及相关恢复概述

    数据库备份恢复.巡检须要关注的对象设置: 1.数据库名称,以及DBID:  --dbid在v$database中     SYS@ORCL>select dbid,name from v$dat ...

  2. MountService整理

    刚毕业时第一个接触的模块就是Vold.这个模块尽管小,但深入下去是有一定难度的. 花了点时间又一次整理了下这一块的逻辑,也当温习下这个模块. watermark/2/text/aHR0cDovL2Js ...

  3. Track Active Item in Solution Explorer

    Tools-->Options-->Projects and Solutions-->Track Active Item in Solution Explorer

  4. JavaWeb简单介绍

    服务器端编程 技术种类 Servlet JSP Struts Spring Hibernate EJB Web Service Web服务器 IIS Apache Tomcat (提供对JSP和Ser ...

  5. PHP高手进阶-LAMPer技能树

  6. ping 原理及ICMP协议简介

    //Ping IP/域名 public static String pingIPCennect(String ipStr) {  String result = "";  if ( ...

  7. How Javascript works (Javascript工作原理) (十一) 渲染引擎及性能优化小技巧

    个人总结:读完这篇文章需要20分钟,这篇文章主要讲解了浏览器中引擎的渲染机制. DOMtree       ----|   |---->  RenderTree CSSOMtree  ----| ...

  8. react基础课程一简述JSX及目录关系

    简述JSX及目录关系 简述:它被称为JSX,它是JavaScript的语法扩展,JSX是一种模板语言,但它具有JavaScript的全部功能.所以学习jsx还是需要学习基础的javaScript的. ...

  9. 阿里&163 yum源

    站点:https://opsx.alibaba.com/mirror #阿里云base cat /etc/yum.repos.d/alibase.repo [rhel7] name=ali-base ...

  10. Git学习总结(5)——搭建Git简易高效服务器

    1. mysysgit+gitblit安装流程 1.1资源  需先下载好的资源(公司用的1.6,1.7+请自行匹配对应的mysysgit+gitblit):  jdk1.6  Git-1.8.4-pr ...