uva 1103 dfs
来源:互联网 发布:中国人名大学网络教育 编辑:程序博客网 时间:2024/04/30 12:09
#include<bits/stdc++.h>using namespace std;const int maxn= 210;const int flagnum[6]={1,5,3,2,4,0};const string tochar= "WAKJSD";int n,m,inp,cnt[6],ct,kase=0;char C;bool graph[maxn][maxn],vis[maxn][maxn];void dfs(int x,int y,bool first){ if(!(x>=0&&x<=n+1&&y>=0&&y<=m+1)||vis[x][y]) return; if(first&&graph[x][y]) return; if(!first&&!graph[x][y]) {++ct;dfs(x,y,1);return;} vis[x][y]=1; dfs(x,y+1,first); dfs(x+1,y,first); dfs(x,y-1,first); dfs(x-1,y,first); return;}int main(){ while(cin>>n>>m&&n&&m) { memset(graph,0,sizeof(graph)); memset(vis,0,sizeof(vis)); memset(cnt,0,sizeof(cnt)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { cin>>C; inp=(C>58?C-97+10:C-48); for(int k=3;k>=0;k--) graph[i][j*4-k]=inp&(1<<k); } m*=4; dfs(0,0,1); for(int i=0;i<=n;i++) for(int j=0;j<=m;j++) if(graph[i][j]&&!vis[i][j]) {ct=0;dfs(i,j,0);++cnt[ct];} cout<<"Case "<<++kase<<": "; for(int i=0;i<6;i++) { while(cnt[flagnum[i]]-->0) cout<<tochar[flagnum[i]]; } cout<<endl; }}
codeblocks有bug 无限输入,我用的是13.12
0 0
- uva 1103 dfs
- UVA 1103 Ancient Messages DFS
- UVA 1103 Ancient Messages (DFS)
- UVa 1103 Ancient Messages (DFS)
- UVA 1103 Ancient Messages dfs
- 【DFS】UVA
- 【DFS】UVA
- uva 1103 dfs染色+dfs判断围块
- UVa 1103 - Ancient Messages(DFS:Floodfill)
- UVa 1103 - Ancient Messages (DFS)
- UVA - 1103 Ancient Messages dfs+stl
- uva 784(dfs)
- dfs uva-297-Quadtrees
- UVA 10318 简单dfs
- uva 11218 KTV(DFS)
- uva 301 Transportation (DFS)
- UVA 185(暴力DFS)
- UVA 11218 - KTV DFS
- python正则表达式
- HDU 1873 看病要排队
- Path Sum II
- UIScrollView和UIPageControl
- java 中的观察者模式
- uva 1103 dfs
- 啊哈,算法!-----dfs3
- 别误用IsDigit与IsNumber函数
- OpenCV中计算二值图像的重心
- Maven(一)简介和基本安装使用
- Android中ViewPager+Fragment的基本使用
- 一个网卡设置多个ip,添加网关;一个虚拟机添加多个网卡
- 白话经典算法系列之六 快速排序 快速搞定
- struts2中ajax(jQuery)返回值data中文乱码问题