【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 ...
随机推荐
- SqlServer2008误操作数据(delete或者update)后恢复数据
实际工作中,有时会直接在数据库中操作数据,比如对数据进行delete或者update操作,当进行这些操作的时候,如果没有加上where条件或者where条件不合理,那么导致的结果可想而知,如果操作的又 ...
- exists改写SQL,使其走正确的执行计划
数据库环境:SQL SERVER 2005 今天看到一条SQL,写得不是很复杂,返回7000多条数据,却执行了15s.SQL文本及各表的数据量如下: SELECT acinv_07.id_item , ...
- objective-c中是如何实现线程同步的?
多线程在各种编程语言中都是难点,很多语言中实现起来很麻烦,objective-c虽然源于c,但其多线程编程却相当简单,可以与java相媲美.这篇文章主要从线程创建与启动.线程的同步与锁.线程的交互.线 ...
- dapper的一个小扩展以支持dataset
废话不多,直接上方法 public static DataSet ExecuteDataSet(this IDbConnection cnn, IDbDataAdapter adapter, stri ...
- mongodb write 【摘自网上,只为记录,学习】
mongodb有一个write concern的设置,作用是保障write operation的可靠性.一般是在client driver里设置的,和db.getLastError()方法关系很大 一 ...
- javascript 中caller,callee,call,apply 的概念[转载]
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments : 该对象代表正在执行的函数和调用它的函数的参数. [function.]argument ...
- error signing assembly unknown error
用VS2010 编译 C#工程,出现 Cryptographic failure while signing assembly 'Assembly.dll' -- 'Unknown error (80 ...
- python 在调用时计算默认值
大家都知道python的默认值是在函数定义时计算出来的, 也就是说默认值只会计算一次, 之后函数调用时, 如果参数没有给出,同一个值会赋值给变量, 这会导致, 如果我们想要一个list默认值, 新手通 ...
- python 自动化之路 day 04.1 python内置函数
总结一下内置函数,Build-in Function. 一.数学运算类 abs(x) 求绝对值 complex([real[, imag]]) 创建一个复数 divmod(a, b) 分别取商和余数注 ...
- Java并发编程二三事
Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...