标签:style http color io os ar for strong sp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1241
题目大意:求一张地图里的连通块。注意可以斜着连通。
解题思路:
八个方向dfs一遍,一边dfs一边染色,断了之后换新颜色。
做法类似Tarjan。orz,我是不是刷错顺序了。
#include "cstdio" #include "cstring" #include "iostream" #include "string" using namespace std; int n,m,map[105][105],vis[105][105],dir[8][2]={-1,0,1,0,0,-1,0,1,-1,-1,-1,1,1,-1,1,1},ans; void dfs(int x,int y) { vis[x][y]=ans; for(int s=0;s<8;s++) { int X=x+dir[s][0],Y=y+dir[s][1]; if(vis[X][Y]||X<0||X>n||Y<0||Y>m||!map[X][Y]) continue; dfs(X,Y); } } int main() { //freopen("in.txt","r",stdin); ios::sync_with_stdio(false); string tt; while(cin>>n>>m&&n) { memset(vis,0,sizeof(vis)); ans=0; for(int i=1;i<=n;i++) { cin>>tt; for(int j=0;j<tt.size();j++) { if(tt[j]==‘*‘) map[i][j+1]=0; if(tt[j]==‘@‘) map[i][j+1]=1; } } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(map[i][j]&&!vis[i][j]) {ans++;dfs(i,j);} cout<<ans<<endl; } }
11867645 | 2014-10-13 23:58:06 | Accepted | 1241 | 15MS | 400K | 992 B | C++ | Physcal |
标签:style http color io os ar for strong sp
原文地址:http://www.cnblogs.com/neopenx/p/4023408.html