Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- using namespace std;
- char T[500][500];
- bool log;
- bool vis[500][500];
- bool f(int posi,int posj){
- int cont=0;
- if(T[posi+1][posj]=='1')cont++;
- if(T[posi-1][posj]=='1')cont++;
- if(T[posi][posj+1]=='1')cont++;
- if(T[posi][posj-1]=='1')cont++;
- // cout<<cont<<endl;
- if(cont==1)return true;
- return false;
- }
- void dfs(int posi,int posj){
- int cont=0;
- // cout<<posi<<" - "<<posj<<endl;
- if(vis[posi][posj])return;
- vis[posi][posj]=true;
- if(T[posi+1][posj]=='1')cont++,dfs(posi+1,posj);
- if(T[posi-1][posj]=='1')cont++,dfs(posi-1,posj);
- if(T[posi][posj+1]=='1')cont++,dfs(posi,posj+1);
- if(T[posi][posj-1]=='1')cont++,dfs(posi,posj-1);
- if(cont==2)return;
- if(cont==1||cont==0){
- // cout<<posi<<" "<<posj<<endl;
- if(log)return;
- if(T[posi+1][posj]=='0'){
- log=f(posi+1,posj);
- if(log)return;
- }
- if(T[posi-1][posj]=='0'){
- log=f(posi-1,posj);
- if(log)return;
- }
- if(T[posi][posj+1]=='0'){
- log=f(posi,posj+1);
- if(log)return;
- }
- if(T[posi][posj-1]=='0'){
- log=f(posi,posj-1);
- if(log)return;
- }
- }
- }
- void bl(int posi,int posj){
- if(vis[posi][posj])return;
- vis[posi][posj]=true;
- if(T[posi+1][posj]=='1')dfs(posi+1,posj);
- if(T[posi-1][posj]=='1')dfs(posi-1,posj);
- if(T[posi][posj+1]=='1')dfs(posi,posj+1);
- if(T[posi][posj-1]=='1')dfs(posi,posj-1);
- }
- int main(){
- while(1){
- int a,b;
- memset(vis,false,sizeof(vis));
- memset(T,'A',sizeof(T));
- scanf("%d%d",&a,&b);
- if(a==0&&b==0)break;
- for(int i=1;i<=a;i++){
- for(int j=1;j<=b;j++){
- cin>>T[i][j];
- }
- }
- /*
- for(int i=1;i<=a;i++){
- for(int j=1;j<=b;j++){
- cout<<T[i][j];
- }
- cout<<endl;
- }*/
- int contt=0;
- for(int i=1;i<=a;i++){
- for(int j=1;j<=b;j++){
- if(vis[i][j])continue;
- if(T[i][j]=='1'&&!vis[i][j]){
- log=false;
- dfs(i,j);
- // cout<<i<<" "<<j<<endl;
- if(!log)contt++;
- }
- }
- }
- printf("%d\n",contt);
- }
- }
Add Comment
Please, Sign In to add comment