zoj2412 dfs连通图
来源:互联网 发布:java加法计算器 编辑:程序博客网 时间:2024/05/18 20:34
zoj2412
#include<stdio.h>#include<iostream>#include<cstdio>#include<queue>#include<cmath>#include<cstring>#include<cstdlib>#include<climits>#include<algorithm>using namespace std;#define ll long long#define mod 1000000007#define N 55int n,m;int vis[N][N];char a[N][N];int dx[4]={0,-1,0,1};int dy[4]={1,0,-1,0};//这个还是蛮有讲究的。int ma[][4]={{0,1,1,0},{1,1,0,0},{0,0,1,1},{1,0,0,1},{0,1,0,1},{1,0,1,0},{1,1,1,0},{0,1,1,1},{1,0,1,1},{1,1,0,1},{1,1,1,1}};void dfs(int x,int y,int k){ vis[x][y]=1; for(int i=0;i<4;i++) { if(ma[k][i]) { int aa=x+dx[i]; int bb=y+dy[i]; int v=a[aa][bb]-'A'; if(aa>=0&&bb>=0&&aa<n&&bb<m&&!vis[aa][bb]&&ma[v][(2+i)%4]) /*ma[v][(2+i)%4]只是要去保证两个连通的话就继续搜索,其实...dfs连通图就是死命的标记...你满足我就标记,和那个dfs解决最长路不相同*/ dfs(aa,bb,v); } }}int main(){ while(~scanf("%d%d",&n,&m)&&n!=-1&&m!=-1) { memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) scanf("%s",a[i]); int ans=0; int ff; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(!vis[i][j]) { int v=a[i][j]-'A'; dfs(i,j,v); ans+=1; } } } printf("%d\n",ans); } return 0;}
还记得CF的一题,题意就是本来一张图有 S 和 . S不能走的,.是可以走的,.本来就是连通的,然后给你一个数字K,让你去补满K个X,使得.还是连通的。
思路,应该是DFS到把所有.都遍历到尾,然后在尾部依次放X,这样感觉比较好
codeforce dfs连通图
#include<stdio.h>#include<iostream>#include<cstdio>#include<queue>#include<cmath>#include<cstring>#include<cstdlib>#include<climits>#include<algorithm>using namespace std;#define ll long long#define mod 1000000007#define N 505int n,m,k;char a[N][N];int vis[N][N];int dx[4]={0,0,-1,1};int dy[4]={1,-1,0,0};void dfs(int x,int y){ if(k==0) return; if(vis[x][y]) return; if(x<0||y<0||x>=n||y>=m) return; if(a[x][y]=='#') return; vis[x][y]=1; for(int i=0;i<4;i++) { int aa=dx[i]+x; int bb=dy[i]+y; dfs(aa,bb); } if(k==0) return; --k; a[x][y]='X';}int main(){ int i,j; while(~scanf("%d%d%d",&n,&m,&k)) { for(i=0;i<n;i++) scanf("%s",a[i]); int flag=0; for(int i=0;i<n;i++) { for(j=0;j<m;j++) { if(a[i][j]=='.') { dfs(i,j); flag=1; break; } } if(flag) break; } for(i=0;i<n;i++) printf("%s\n",a[i]); } return 0;}
0 0
- zoj2412 dfs连通图
- ZOJ2412 Farm Irrigation (DFS)
- zoj2412 Farm Irrigation 搜索dfs
- zoj2412
- DFS连通图
- zoj2412 & hdu1198 - Farm Irrigation (DFS实现)
- 图 dfs遍历连通块
- nyoj1237 最大岛屿 dfs求连通图
- UVA 572(用DFS求连通图)
- 无向图dfs求连通分量
- dfs--查连通分量
- hdu1241(dfs连通块)
- dfs连通块2
- 求连通分量(DFS)
- zoj2412题解
- zoj2412 hdu1198
- POJ2762判断图是否单向连通,缩点+dfs
- 数据结构—连通图的遍历—DFS和BFS
- 2016年:如何测试您的网站响应时间
- android手机调通kgdb调试
- Java中数组的使用
- java一周知识回顾
- go圣经笔记--第二章
- zoj2412 dfs连通图
- iOS开发基础控件--按钮(UIButton)
- 秒杀系统架构分析与实战
- MySQL > 建索引提高查询速度
- PDE6 Transport with decay
- GVIM配置
- JSON与XML的区别比较
- Cannot infer type arguments for PageImpl<>
- 一个成功敏捷团队的失败历程