【HDOJ】1198 Farm Irrigation
其实就是并查集,写麻烦了,同样的代码第一次提交wa了,第二次就过了。
#include <stdio.h>
#include <string.h> #define MAXNUM 55
#define UP 0
#define RIGHT 1
#define DOWN 2
#define LEFT 3 char buf[MAXNUM][MAXNUM];
int bin[MAXNUM*MAXNUM];
char visit[MAXNUM*MAXNUM][MAXNUM*MAXNUM]; int direct[][] = {{-,},{,},{,},{,-}};
// A B C D E
int pipes[][] = {{,,,},{,,,},{,,,},{,,,}, {,,,},
// F G H I J
{,,,},{,,,},{,,,},{,,,}, {,,,}, {,,,}}; int find(int x) {
int r = x; while (r != bin[r])
r = bin[r]; return r;
} void merge(int x, int y) {
int fx, fy; fx = find(x);
fy = find(y); if (fx != fy)
bin[fx] = fy;
} int main() {
int n, m;
int i, j, k, x, y, p, q, is, id, ns, nd; while (scanf("%d %d%*c", &n, &m) != EOF) {
if (m< || n<)
break;
for (i=; i<n; ++i)
scanf("%s", buf[i]);
memset(visit, , sizeof(visit));
for (i=; i<n*m; ++i)
bin[i] = i;
for (i=; i<n; ++i) {
for (j=; j<m; ++j) {
is = buf[i][j] - 'A';
ns = i*m+j;
for (k=; k<; ++k) {
x = i + direct[k][];
y = j + direct[k][];
if (x< || x>=n || y< || y>=m)
continue;
nd = x*m+y;
if (visit[ns][nd] || visit[nd][ns])
continue;
id = buf[x][y] - 'A';
switch (k) {
case UP:
p = pipes[is][UP];
q = pipes[id][DOWN];
break;
case RIGHT:
p = pipes[is][RIGHT];
q = pipes[id][LEFT];
break;
case DOWN:
p = pipes[is][DOWN];
q = pipes[id][UP];
break;
case LEFT:
p = pipes[is][LEFT];
q = pipes[id][RIGHT];
break;
default: ;
}
if (p && q)
merge(ns, nd);
visit[ns][nd] = ;
visit[nd][ns] = ;
}
}
}
k = ; for (i=; i<n*m; ++i) {
if (i == bin[i])
++k;
}
printf("%d\n", k);
} return ;
}
【HDOJ】1198 Farm Irrigation的更多相关文章
- 【HDOJ】3696 Farm Game
SPFA求最短路径.见图的时候注意逆向建图. /* 3696 */ #include <iostream> #include <queue> #include <vect ...
- 【BZOJ4061】[Cerc2012]Farm and factory(最短路,构造)
[BZOJ4061][Cerc2012]Farm and factory(最短路,构造) 题面 BZOJ 然而权限题QwQ. 题解 先求出所有点到达\(1,2\)的最短路,不妨记为\(d_{u,1}, ...
- HDU 1198 Farm Irrigation(状态压缩+DFS)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1198 题目: Farm Irrigation Time Limit: 2000/1000 MS (Ja ...
- hdu.1198.Farm Irrigation(dfs +放大建图)
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1198 Farm Irrigation (并检查集合 和 dfs两种实现)
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1198 Farm Irrigation(并查集,自己构造连通条件或者dfs)
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDU 1198 Farm Irrigation(并查集+位运算)
Farm Irrigation Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Tot ...
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- hdu 1198 Farm Irrigation(深搜dfs || 并查集)
转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm ...
随机推荐
- C#中out和ref使用
1.out必须在方法中为其赋值,在调用的时候必须在变量的前面加上out关键字,侧重输出. 2.ref修饰方法的参数,在调用的时候必须在变量的前面加上ref关键字,可以修改其值也可以不修改,侧重修改. ...
- ACM——大数相加
大数加法 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交:2085 测试通过:543 描述 求两个非负整数( ...
- Web前端/后端
Web前端: 1)精通HTML,能够书写语义合理,结构清晰,易维护的HTML结构. 2)精通CSS,能够还原视觉设计,并兼容业界承认的主流浏览器. ...
- 向SQL2008R2导入Acess、excel数据
一:导入Access数据 1.在sql2008查询分析 器中输入如下查询语句能查出access中的数据 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLE ...
- sql的临时表使用小结
1.创建方法: 方法一:create table TempTableName或select [字段1,字段2,...,] into TempTableName from table 方法二:creat ...
- O-C-11-利用类方法做一个简单的计算器
#import <Foundation/Foundation.h> @interface calculator : NSObject //@property double numb ...
- 自己在使用的English词典
一.ESL/非母语词典 二.EFL/母语词典 1.American Heritage Dictionary 2.World Book Dictionary 3.Oxford Dictionary of ...
- Codevs 2843 拯救炜哥
2843 拯救炜哥 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一天,炜哥和欧能干一起去大魔王家里做(dao)客(luan), ...
- Libnids---编写网络应用程序的利器
一.前言 Libnids是一个用于网络入侵检测开发的专业编程接口,它使用Libpcap进行数据包的捕获.同时,Libnids提供了TCP/IP数据流重组功能,因此省去了应用层自己考虑数据分片.重传等情 ...
- jquery 实现复选框单选
$(function() { $(':checkbox[name=复选框name值]').each(function() { $(this).click(function() { if ($(t ...