【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 ...
随机推荐
- 使用RequireJS优化Web应用前端
require.js官网:http://requirejs.org/docs/download.html 一篇不错的文章:http://www.csdn.net/article/2012-09-27/ ...
- VBA 打印设置相关属性及方法
打印设置说明,以下均为默认值. With ActiveSheet.PageSetup .PrintTitleRows = "" '工作表打印标题:顶端标题行(R) .PrintTi ...
- mysql error笔记1
mysql视图问题: The user specified as a definer ('root'@'%') does not exist 原因:由于root用户对全局host无访问权限,给root ...
- 每天一水SGU347
今天本来应该要写校题解报告的,但是CF跪了,一题都没JUDGE出来,最后比赛取消了~郁闷啊! 后来闲的无事,就到处看看contest,随便点进去一个,看到一水题,几分钟写完,马上就WA了!~ 题目的信 ...
- Headfirst设计模式的C++实现——简单工厂模式(Simple Factory)之二
为了引出后续的工厂方法,把在简单工厂模式的基础上增加了新功能——加盟店 简而言之就是把原来的单一简单工厂(能生产cheese和greek两种pizza)细分成了纽约地区的和芝加哥地区的(每种地区都能生 ...
- 高性能网络I/O框架-netmap源码分析
from:http://blog.chinaunix.net/uid-23629988-id-3594118.html 博主这篇文章写的很好 感觉很有借签意义 值得阅读 高性能网络I/O框架-netm ...
- datareader 和dataset 区别
ADO.NET2.0提供了两个用于检索关系数据的对象:DataSet和DataReader.并且这两个对象都可以将检索的关系数据存储在内存中.在软件开发过程中经常用到这两个控件,由于这两个控件在使用和 ...
- chgrp命令
chgrp命令用于变更文件或目录的所属群组. 在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理.您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆 ...
- mysql中char与varchar的区别
在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,这两种选择有时候让人很纠结,今天想总结一下它们两者的区别,明确一下选择塔 ...
- C# MySql 操作类
/* MySql 类 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; ...