(zoj 2412 Farm Irrigation)<SB并查集>
2017-09-07 16:44
357 查看
传送门
没啥,注意细节就好
Solution
把可以连接的用并查集并起来没啥,注意细节就好
Code
// by spli #include<cstring> #include<cstdio> #include<iostream> #include<algorithm> using namespace std; const int N=55; int n,m; int f[N*N]; char s[60][60]; int _find(int x){ if(x!=f[x]) f[x]=_find(f[x]); return f[x]; } void un(int x,int y){ if(x<=0||y<=0) return; if(x>n*m||y>n*m) return; //cout<<x<<" "<<y<<endl; int r1=_find(x); int r2=_find(y); if(r1!=r2) f[r1]=r2; } int main(){ while(scanf("%d%d",&n,&m)&&n!=-1){ for(int i=1;i<=n*m;++i) f[i]=i; for(int i=1;i<=n;++i) scanf("%s",s[i]+1); for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j){ if(s[i][j]=='A'){ if(s[i-1][j]!='B'&&s[i-1][j]!='F'&&s[i-1][j]!='G'&&s[i-1][j]!='A') un((i-2)*m+j,(i-1)*m+j); if(s[i][j-1]!='A'&&s[i][j-1]!='C'&&s[i][j-1]!='E'&&s[i][j-1]!='H'&&j!=1) un((i-1)*m+j-1,(i-1)*m+j); } if(s[i][j]=='B'){ if(s[i-1][j]!='B'&&s[i-1][j]!='F'&&s[i-1][j]!='G'&&s[i-1][j]!='A') un((i-2)*m+j,(i-1)*m+j); if(s[i][j+1]!='B'&&s[i][j+1]!='D'&&s[i][j+1]!='E'&&s[i][j+1]!='J'&&j!=m) un((i-1)*m+j+1,(i-1)*m+j); } if(s[i][j]=='C'){ if(s[i][j-1]!='A'&&s[i][j-1]!='C'&&s[i][j-1]!='E'&&s[i][j-1]!='H'&&j!=1) un((i-1)*m+j-1,(i-1)*m+j); if(s[i+1][j]!='C'&&s[i+1][j]!='D'&&s[i+1][j]!='F'&&s[i+1][j]!='I') un(i*m+j,(i-1)*m+j); } if(s[i][j]=='D'){ if(s[i][j+1]!='B'&&s[i][j+1]!='D'&&s[i][j+1]!='E'&&s[i][j+1]!='J'&&j!=m) un((i-1)*m+j+1,(i-1)*m+j); if(s[i+1][j]!='C'&&s[i+1][j]!='D'&&s[i+1][j]!='F'&&s[i+1][j]!='I') un(i*m+j,(i-1)*m+j); } if(s[i][j]=='E'){ if(s[i-1][j]!='B'&&s[i-1][j]!='F'&&s[i-1][j]!='G'&&s[i-1][j]!='A') un((i-2)*m+j,(i-1)*m+j); if(s[i+1][j]!='C'&&s[i+1][j]!='D'&&s[i+1][j]!='F'&&s[i+1][j]!='I') un(i*m+j,(i-1)*m+j); } if(s[i][j]=='F'){ if(s[i][j-1]!='A'&&s[i][j-1]!='C'&&s[i][j-1]!='E'&&s[i][j-1]!='H'&&j!=1) un((i-1)*m+j-1,(i-1)*m+j); if(s[i][j+1]!='B'&&s[i][j+1]!='D'&&s[i][j+1]!='E'&&s[i][j+1]!='J'&&j!=m) un((i-1)*m+j+1,(i-1)*m+j); } if(s[i][j]=='G'){ if(s[i-1][j]!='B'&&s[i-1][j]!='F'&&s[i-1][j]!='G'&&s[i-1][j]!='A') un((i-2)*m+j,(i-1)*m+j); if(s[i][j-1]!='A'&&s[i][j-1]!='C'&&s[i][j-1]!='E'&&s[i][j-1]!='H'&&j!=1) un((i-1)*m+j-1,(i-1)*m+j); if(s[i][j+1]!='B'&&s[i][j+1]!='D'&&s[i][j+1]!='E'&&s[i][j+1]!='J'&&j!=m) un((i-1)*m+j+1,(i-1)*m+j); } if(s[i][j]=='H'){ if(s[i-1][j]!='B'&&s[i-1][j]!='F'&&s[i-1][j]!='G'&&s[i-1][j]!='A') un((i-2)*m+j,(i-1)*m+j); if(s[i][j-1]!='A'&&s[i][j-1]!='C'&&s[i][j-1]!='E'&&s[i][j-1]!='H'&&j!=1) un((i-1)*m+j-1,(i-1)*m+j); if(s[i+1][j]!='C'&&s[i+1][j]!='D'&&s[i+1][j]!='F'&&s[i+1][j]!='I') un(i*m+j,(i-1)*m+j); } if(s[i][j]=='I'){ if(s[i][j-1]!='A'&&s[i][j-1]!='C'&&s[i][j-1]!='E'&&s[i][j-1]!='H'&&j!=1) un((i-1)*m+j-1,(i-1)*m+j); if(s[i+1][j]!='C'&&s[i+1][j]!='D'&&s[i+1][j]!='F'&&s[i+1][j]!='I') un(i*m+j,(i-1)*m+j); if(s[i][j+1]!='B'&&s[i][j+1]!='D'&&s[i][j+1]!='E'&&s[i][j+1]!='J'&&j!=m) un((i-1)*m+j+1,(i-1)*m+j); } if(s[i][j]=='J'){ if(s[i-1][j]!='B'&&s[i-1][j]!='F'&&s[i-1][j]!='G'&&s[i-1][j]!='A') un((i-2)*m+j,(i-1)*m+j); if(s[i][j+1]!='B'&&s[i][j+1]!='D'&&s[i][j+1]!='E'&&s[i][j+1]!='J'&&j!=m) un((i-1)*m+j+1,(i-1)*m+j); if(s[i+1][j]!='C'&&s[i+1][j]!='D'&&s[i+1][j]!='F'&&s[i+1][j]!='I') un(i*m+j,(i-1)*m+j); } if(s[i][j]=='K'){ if(s[i-1][j]!='B'&&s[i-1][j]!='F'&&s[i-1][j]!='G'&&s[i-1][j]!='A') un((i-2)*m+j,(i-1)*m+j); if(s[i][j-1]!='A'&&s[i][j-1]!='C'&&s[i][j-1]!='E'&&s[i][j-1]!='H'&&j!=1) un((i-1)*m+j-1,(i-1)*m+j); if(s[i][j+1]!='B'&&s[i][j+1]!='D'&&s[i][j+1]!='E'&&s[i][j+1]!='J'&&j!=m) un((i-1)*m+j+1,(i-1)*m+j); if(s[i+1][j]!='C'&&s[i+1][j]!='D'&&s[i+1][j]!='F'&&s[i+1][j]!='I') un(i*m+j,(i-1)*m+j); } } } int ans=0; for(int i=1;i<=n*m;++i) if(_find(i)==i) ans++; printf("%d\n",ans); } return 0; }
相关文章推荐
- ZOJ 2412 Farm Irrigation
- zoj 2412 Farm Irrigation
- ZOJ 2412 Farm Irrigation
- ZOJ 2412(Farm Irrigation)
- 【搜索入门专题1】E - Farm Irrigation 【BFS】ZOJ 2412
- ZOJ 2412 Farm Irrigation
- zoj - 2412 - Farm Irrigation
- ZOJ 2412 Farm Irrigation
- ZOJ 2412 Farm Irrigation
- zoj - 2412 - Farm Irrigation
- ZOJ 2412 Farm Irrigation
- zoj 2412 Farm Irrigation
- ZOJ 2412 Farm Irrigation
- ZOJ 2412 Farm Irrigation
- zoj 2412 Farm Irrigation [ dfs ]
- zoj 2412 Farm Irrigation
- 情况数组zoj2412-Farm Irrigation
- zoj 2412 Farm Irrigation
- zoj_2412 Farm Irrigation
- ZOJ Problem Set - 2412 Farm Irrigation