博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 572 油田(DFS求连通块)
阅读量:5036 次
发布时间:2019-06-12

本文共 1247 字,大约阅读时间需要 4 分钟。

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=513

终于开始接触图了,恩,开始接触DFS了,这道题就是求连通分量,比较简单。

1 #include
2 #include
3 using namespace std; 4 5 int m, n; //记录连通块的数量 6 char a[10000][10000]; 7 int b[10000][10000]; 8 9 void DFS(int i, int j, int count)10 {11 if (i < 0 || i >= m || j < 0 || j >= n) return; //在递归时出界的情况12 if(b[i][j]>0 || a[i][j]!='@') return;13 b[i][j] = count;14 for (int p = -1; p <= 1; p++)15 {16 for (int q = -1; q <= 1; q++)17 {18 if (p != 0||q != 0) DFS(i + p, j + q, count);19 }20 }21 }22 23 int main()24 {25 while (cin >> m >> n && m && n)26 {27 for (int i = 0; i < m; i++)28 scanf("%s", &a[i]);29 int count = 0;30 memset(b, 0, sizeof(b));31 for (int i = 0; i < m; i++)32 {33 for (int j = 0; j < n; j++)34 {35 if (b[i][j] == 0 && a[i][j]=='@') DFS(i, j, ++count);36 }37 }38 cout << count << endl;39 }40 return 0;41 }

2016-12-03  07:49:56

转载于:https://www.cnblogs.com/zyb993963526/p/6127937.html

你可能感兴趣的文章
oracle入门(4)——少而常用的命令
查看>>
打印机设置(PrintDialog)、页面设置(PageSetupDialog) 及 RDLC报表如何选择指定打印机...
查看>>
Java 虚拟机部分面试题
查看>>
二叉树的遍历问题总结
查看>>
Spring之面向切面编程AOP
查看>>
MATLAB GUI程序设计中使文本框接收多行输入的方法
查看>>
全文检索-Elasticsearch (四) elasticsearch.net 客户端
查看>>
Oracle DBMS_SESSION
查看>>
sublime复制当前行到下一行
查看>>
WPF 3D变换应用
查看>>
ArchLinux安装开源VMware Tools
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>
C#微信登录-手机网站APP应用
查看>>
HTML5实践 -- iPhone Safari Viewport Scaling Bug
查看>>