HDU 1198(并查集)

题意:给你11个图,每一个都有管道,然后给一张由这11个正方形中的n个组成的图,判断有几条连通的管道;

思路:在大一暑假的时候做过这道题,当时是当暴力来做的,正解是并查集,需要进行一下转换;

转换1:将子图中的管道转换为数字码,通为1,不通为0;

转换2:一维--->二维,i,j换成在n*m中的第几个,p[i][j] = i*n+j,而且find_set,Union也需要独一无二的坐标来进行判断,然后转换成2维去具体比较;

 1 #include<stdio.h>
 2 char a[11][5]= {"1010","1001","0110","0101","1100","0011","1011","1110","0111","1101","1111"};
 3 int p[51][51];
 4 char G[51][51];
 5 int n,m;
 6 int find_set(int x)///查找父节点,并压缩路径
 7 {
 8     int r = x/n;
 9     int c = x % n;
10     if(p[r][c]!=x)
11         p[r][c]=find_set(p[r][c]);
12     return p[r][c];
13 }
14 void Union(int x,int y)///合并x,y的集合
15 {
16     x=find_set(x);
17     y=find_set(y);
18     if(x!=y)
19         p[y/n][y%n]=x;
20 }
21 int main()
22 {
23     int i,j,sum;
24     while(scanf("%d%d",&m,&n)!=-1&&(n!=-1||m!=-1))
25     {
26         for(i=0; i<m; i++)
27         {
28             scanf("%s",G[i]);
29             for(j=0; j<n; j++)
30                 p[i][j]=i*n+j;///将父节点初始化
31         }
32         for(i=0; i<m; i++)
33             for(j=0; j<n; j++)
34             {
35                 ///判断两个方向就好了
36                 if(j>0&&a[G[i][j]-‘A‘][2]==‘1‘&&a[G[i][j-1]-‘A‘][3]==‘1‘)
37                     Union(i*n+j,i*n+j-1);
38
39                 if(i>0&&a[G[i][j]-‘A‘][0]==‘1‘&&a[G[i-1][j]-‘A‘][1]==‘1‘)
40                     Union(i*n+j,(i-1)*n+j);
41             }
42         sum=0;
43         for(i=0; i<m; i++)
44             for(j=0; j<n; j++)
45                 if(p[i][j]==i*n+j)
46                     sum++;
47         printf("%d/n",sum);
48     }
49     return 0;
50 }

时间: 2024-10-05 17:29:26

HDU 1198(并查集)的相关文章

hdu 1198(并查集 )

自从懂了并查集只后,感觉好多题都是并查集,就像哪一天的字典树一样,这道题一看就是一个并查集,最后查询父节点有几个, 难点:建模的时候应该吧上下联通的和左右联通的标记一下,只要他们和上下左右的都能连通,就把他们并到一个集合里面,我是只判断下和右即可, 源代码: #include<stdio.h> #include<string.h> int up[8], down[8], right[8], left[8]; int par[2504]; char map[54][54]; char

HDU 1051 并查集+贪心

Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11694    Accepted Submission(s): 4837 Problem Description There is a pile of n wooden sticks. The length and weight of each stick ar

HDU 1512 并查集+左偏树

Monkey King Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3105    Accepted Submission(s): 1330 Problem Description Once in a forest, there lived N aggressive monkeys. At the beginning, they e

hdu 1829 并查集(食物链的弱化版)

http://acm.hdu.edu.cn/showproblem.php?pid=1829 Problem Description Background  Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they feature two different genders and that they only interact with bugs of

hdu 4514 并查集+树形dp

湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 4539    Accepted Submission(s): 816 Problem Description 随着杭州西湖的知名度的进一步提升,园林规划专家湫湫希望设计出一条新的经典观光线路,根据老板马小腾的指示,新的风景线最好能建成环形,如果没有条件建成环形,

hdu 1856 并查集

http://acm.hdu.edu.cn/showproblem.php?pid=1856 More is better Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 327680/102400 K (Java/Others)Total Submission(s): 13672    Accepted Submission(s): 5008 Problem Description Mr Wang wants some boys

HDU 1181 并查集 or SPFA

变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 12773    Accepted Submission(s): 4733 Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规

hdu 1213 并查集入门

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1213 How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12538    Accepted Submission(s): 6145 Problem Description Today is Ignatius' b

HDU 3938 并查集

求小于L的路径点对数(路上的最大值),按权值排序,从小到大并查集建图,有点kruskal的意思. /** @Date : 2017-09-22 17:30:11 * @FileName: HDU 3938 并查集 离线.cpp * @Platform: Windows * @Author : Lweleth ([email protected]) * @Link : https://github.com/ * @Version : $Id$ */ #include <bits/stdc++.h>

HDU 1829 并查集

A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8224    Accepted Submission(s): 2631 Problem Description Background Professor Hopper is researching the sexual behavior of a rare sp