HDU 1198Farm Irrigation(並查集)
Farm Irrigation
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4408 Accepted Submission(s): 1911
Problem Description
Benny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a lot of samll squares. Water pipes are placed in these squares. Different square has a different type of pipe. There are 11 types of pipes, which is marked from A
to K, as Figure 1 shows.
Figure 1
Benny has a map of his farm, which is an array of marks denoting the distribution of water pipes over the whole farm. For example, if he has a map
ADC
FJK
IHE
then the water pipes are distributed like
Figure 2
Several wellsprings are found in the center of some squares, so water can flow along the pipes from one square to another. If water flow crosses one square, the whole farm land in this square is irrigated and will have a good harvest in autumn.
Now Benny wants to know at least how many wellsprings should be found to have the whole farm land irrigated. Can you help him?
Note: In the above example, at least 3 wellsprings are needed, as those red points in Figure 2 show.
Benny has a map of his farm, which is an array of marks denoting the distribution of water pipes over the whole farm. For example, if he has a map
ADC
FJK
IHE
then the water pipes are distributed like
Several wellsprings are found in the center of some squares, so water can flow along the pipes from one square to another. If water flow crosses one square, the whole farm land in this square is irrigated and will have a good harvest in autumn.
Now Benny wants to know at least how many wellsprings should be found to have the whole farm land irrigated. Can you help him?
Note: In the above example, at least 3 wellsprings are needed, as those red points in Figure 2 show.
Input
There are several test cases! In each test case, the first line contains 2 integers M and N, then M lines follow. In each of these lines, there are N characters, in the range of 'A' to 'K', denoting the type of water pipe over the corresponding square. A negative
M or N denotes the end of input, else you can assume 1 <= M, N <= 50.
Output
For each test case, output in one line the least number of wellsprings needed.
Sample Input
2 2
DK
HF
3 3
ADC
FJK
IHE
-1 -1
Sample Output
2
3
題目大意:給你一張n*n圖,每個點可以連線左上右下,可以詳見上面的A~K十一幅圖,然後每個點可以選擇這十一幅其中的任意一張。問你有多少的聯通分支。
解題思路:每張圖用四個座標表示能否向左上右下四個方向延伸,然後就是並查集判斷了。
題目地址:Farm Irrigation
AC程式碼:
#include<iostream>
#include<cstdio>
using namespace std;
char map1[52][52];
int r[3000],sum,n,m;
//左上右下
int ch[12][4]={1,1,0,0,0,1,1,0,1,0,0,1,0,0,1,1,0,1,0,1,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1};
int find1(int x)
{
while (r[x]!=x)
x=r[x];
return x;
}
void merge1(int x,int y)
{
x=find1(x);
y=find1(y);
if(x!=y)
sum--;
r[x]=y;
}
void uni(int i,int j)
{
if (j>0 && ch[map1[i][j]-'A'][0] && ch[map1[i][j-1]-'A'][2])
merge1(i*m+j-1,i*m+j); //能否與左邊的相連
if (i>0 && ch[map1[i][j]-'A'][1] && ch[map1[i-1][j]-'A'][3])
merge1((i-1)*m+j,i*m+j); //能否與上邊的相連
}
int main ()
{
int i,j;
while (cin>>n>>m)
{
if (n==-1 && m==-1)
break;
for(i=0;i<3000;i++)
r[i]=i;
sum=n*m;
for(i=0;i<n;i++)
cin>>map1[i];
for (i=0;i<n;i++)
for (j=0;j<m;j++)
uni(i,j);
printf("%d\n",sum);
}
return 0;
}
/*
2 2
DK
HF
3 3
ADC
FJK
IHE
-1 -1
*/
//15MS 296K
相關文章
- 並查集的應用:hdu 1213並查集
- HDU 1213 How Many Tables(並查集)並查集
- HDU-3172 Virtual Friends 並查集+map並查集
- hdu5222 拓撲+並查集並查集
- hdu 1811 並查集+拓撲排序並查集排序
- HDU-1272 小希的迷宮 並查集並查集
- hdu 1829 並查集(食物鏈的弱化版)並查集
- HDU 5200 Tree (離線並查集)並查集
- HDU 3234 Exclusive-OR 擴充套件並查集套件並查集
- hdu4313 貪心並查集 || 樹形dp並查集
- HDU 1272小希的迷宮(簡單並查集)並查集
- HDU 3038 How Many Answers Are Wrong (帶權並查集)並查集
- HDU-3635 Dragon Balls 並查集路徑壓縮Go並查集路徑壓縮
- HDU-3461 Code Lock 並查集 + 二分求冪並查集
- 並查集到帶權並查集並查集
- HDU 3938 Portal【並查集+upper_bound(第四個引數)】並查集
- 【並查集】【帶偏移的並查集】食物鏈並查集
- 2013成都站F題||hdu4786 並查集 生成樹並查集
- 2012長春站D題||hdu4424 並查集並查集
- 並查集(一)並查集的幾種實現並查集
- 3.1並查集並查集
- 並查集(小白)並查集
- HDU5441 Travel (2015年長春網路賽,並查集)並查集
- 並查集(Union Find)並查集
- 並查集應用並查集
- The Door Problem 並查集並查集
- 並查集練習並查集
- 並查集的使用並查集
- 並查集—應用並查集
- 寫模板, 並查集。並查集
- 並查集跳躍並查集
- 各種並查集並查集
- 食物鏈(並查集)並查集
- 並查集(二)並查集的演算法應用案例上並查集演算法
- The Suspects-並查集(4)並查集
- [leetcode] 並查集(Ⅰ)LeetCode並查集
- [leetcode] 並查集(Ⅱ)LeetCode並查集
- [leetcode] 並查集(Ⅲ)LeetCode並查集