UVA572dfs连通块
来源:互联网 发布:高尔夫规则软件 编辑:程序博客网 时间:2024/05/22 06:51
这题WA了一发,简单的连通块,手残了,输入的时候本来下标都是打算从一开始的,
然后还有gets输入,另外如果是从1开始的下标记得取余什么的n要加一,另外已经加入队列的记得
标记为1.
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<string>#include<cctype>#include<cmath>#include<map>#include<set>#include<vector>#include<queue>#include<stack>#include<ctime>#include<algorithm>#include<sstream>#define LL long longusing namespace std;int vis[110][110];char grid[110][110];int n,m;int dx[8]={-1,0,0,1,-1,-1,1,1},dy[8]={0,-1,1,0,-1,1,-1,1};void dfs(int u){ queue<int> q; q.push(u); while(!q.empty()) { // cout<<"hehe"<<endl; int d=q.front(); q.pop(); int x=d/(n+1); int y=d%(n+1); // cout<<x<<' '<<y<<endl; vis[x][y]=1; for(int i=0;i<8;i++) { int e=x+dx[i]; int f=y+dy[i]; // cout<<e<<' '<<f<<' '<<vis[e][f]<<' '<<grid[e][f]<<endl; // vis[e][f]=1; if(e>0&&e<=m&&f>0&&f<=n&&!vis[e][f]&&grid[e][f]=='@') { q.push(e*(n+1)+f); // cout<<e<<' '<<f<<endl; vis[e][f]=1; } } }}int main(){ while(cin>>m) { cin>>n; if(!m) break; getchar(); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) { cin>>grid[i][j]; } // for(int i=1;i<=m;i++) // for(int j=1;j<=n;j++) // cout<<grid[i][j]; int sum=0; memset(vis,0,sizeof(vis)); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) { if(!vis[i][j]&&grid[i][j]=='@') { sum++; dfs(i*(n+1)+j); } } cout<<sum<<endl; } return 0;}
0 0
- UVA572dfs连通块
- 连通块
- hdu1241(dfs连通块)
- dfs连通块2
- POJ2386 求连通块
- UVa_Oil Deposits(连通块)
- [BZOJ3399]连通块计数
- cf723D 连通块
- 10.21 连通块 2415
- poj2386 深搜 连通块问题
- 图 dfs遍历连通块
- UVA 11853(找连通块)
- 用DFS求连通块
- 用DFS求连通块
- 【NOIP2013中秋节模拟】连通块
- JZOJ 3453. 连通块(connect)
- uva572 油田 连通块遍历
- poj1562 DFS/BFS连通块
- 实习小结十三:基于PHP ZF框架的文章管理模块
- iOS9AdaptationTips
- sigsuspend()函数作用详解
- LeetCode题解:Container With Most Water
- spring boot application properties配置详解
- UVA572dfs连通块
- 转 Java内存管理原理及内存区域详解
- 详解 Android 的 Activity 组件
- 【Lua】Lua中的九九乘法表以及字符串拼接
- 生活中的观察者模式
- 【算法入门】广度/宽度优先搜索(BFS)
- Python装饰器与面向切面编程
- LeetCode题解:Integer to Roman
- Xcode 实用插件