hdu1198 并查集
来源:互联网 发布:社交数据库设计 编辑:程序博客网 时间:2024/05/29 09:21
#include<cstdio>#include<cmath>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#include<string>using namespace std;#define INF 0x3f3f3f3ftypedef __int64 ll;int f[2505];int _find(int x){ if(x!=f[x]) f[x]=_find(f[x]); return f[x];}char a[55][55];int dir[11][11][4]={0};//0s,1x,2z,3yint main(){ int n,m;/*A*/dir[0][2][0]=1;dir[0][3][0]=1;dir[0][9][0]=1; dir[0][7][0]=1;dir[0][8][0]=1;dir[0][10][0]=1; dir[0][4][0]=1; dir[0][1][2]=1;dir[0][5][2]=1;dir[0][6][2]=1; dir[0][8][2]=1;dir[0][9][2]=1;dir[0][10][2]=1; dir[0][3][2]=1;/*B*/dir[1][2][0]=1;dir[1][3][0]=1;dir[1][9][0]=1; dir[1][7][0]=1;dir[1][8][0]=1;dir[1][10][0]=1; dir[1][4][0]=1; dir[1][2][3]=1;dir[1][5][3]=1;dir[1][6][3]=1; dir[1][7][3]=1;dir[1][8][3]=1;dir[1][10][3]=1; dir[1][0][3]=1;/*C*/dir[2][1][2]=1;dir[2][5][2]=1;dir[2][6][2]=1; dir[2][8][2]=1;dir[2][9][2]=1;dir[2][10][2]=1; dir[2][3][2]=1; dir[2][0][1]=1;dir[2][1][1]=1;dir[2][6][1]=1; dir[2][4][1]=1;dir[2][9][1]=1;dir[2][7][1]=1; dir[2][10][1]=1;/*D*/dir[3][0][1]=1;dir[3][1][1]=1;dir[3][6][1]=1; dir[3][4][1]=1;dir[3][9][1]=1;dir[3][7][1]=1; dir[3][10][1]=1; dir[3][2][3]=1;dir[3][5][3]=1;dir[3][6][3]=1; dir[3][7][3]=1;dir[3][8][3]=1;dir[3][10][3]=1; dir[3][0][3]=1;/*E*/dir[4][2][0]=1;dir[4][3][0]=1;dir[4][9][0]=1; dir[4][7][0]=1;dir[4][8][0]=1;dir[4][10][0]=1; dir[4][4][0]=1; dir[4][0][1]=1;dir[4][1][1]=1;dir[4][6][1]=1; dir[4][4][1]=1;dir[4][9][1]=1;dir[4][7][1]=1; dir[4][10][1]=1;/*F*/dir[5][2][3]=1;dir[5][5][3]=1;dir[5][6][3]=1; dir[5][7][3]=1;dir[5][8][3]=1;dir[5][10][3]=1; dir[5][0][3]=1; dir[5][1][2]=1;dir[5][5][2]=1;dir[5][6][2]=1; dir[5][8][2]=1;dir[5][9][2]=1;dir[5][10][2]=1; dir[5][3][2]=1;/*G*/dir[6][2][0]=1;dir[6][3][0]=1;dir[6][9][0]=1; dir[6][7][0]=1;dir[6][8][0]=1;dir[6][10][0]=1; dir[6][4][0]=1; dir[6][2][3]=1;dir[6][5][3]=1;dir[6][6][3]=1; dir[6][7][3]=1;dir[6][8][3]=1;dir[6][10][3]=1; dir[6][0][3]=1; dir[6][1][2]=1;dir[6][5][2]=1;dir[6][6][2]=1; dir[6][8][2]=1;dir[6][9][2]=1;dir[6][10][2]=1; dir[6][3][2]=1;/*H*/dir[7][2][0]=1;dir[7][3][0]=1;dir[7][9][0]=1; dir[7][7][0]=1;dir[7][8][0]=1;dir[7][10][0]=1; dir[7][4][0]=1; dir[7][0][1]=1;dir[7][1][1]=1;dir[7][6][1]=1; dir[7][4][1]=1;dir[7][9][1]=1;dir[7][7][1]=1; dir[7][10][1]=1; dir[7][1][2]=1;dir[7][5][2]=1;dir[7][6][2]=1; dir[7][8][2]=1;dir[7][9][2]=1;dir[7][10][2]=1; dir[7][3][2]=1;/*I*/dir[8][2][3]=1;dir[8][5][3]=1;dir[8][6][3]=1; dir[8][7][3]=1;dir[8][8][3]=1;dir[8][10][3]=1; dir[8][0][3]=1; dir[8][1][2]=1;dir[8][5][2]=1;dir[8][6][2]=1; dir[8][8][2]=1;dir[8][9][2]=1;dir[8][10][2]=1; dir[8][3][2]=1; dir[8][0][1]=1;dir[8][1][1]=1;dir[8][6][1]=1; dir[8][4][1]=1;dir[8][9][1]=1;dir[8][7][1]=1; dir[8][10][1]=1;/*J*/dir[9][2][0]=1;dir[9][3][0]=1;dir[9][9][0]=1; dir[9][7][0]=1;dir[9][8][0]=1;dir[9][10][0]=1; dir[9][4][0]=1; dir[9][0][1]=1;dir[9][1][1]=1;dir[9][6][1]=1; dir[9][4][1]=1;dir[9][9][1]=1;dir[9][7][1]=1; dir[9][10][1]=1; dir[9][2][3]=1;dir[9][5][3]=1;dir[9][6][3]=1; dir[9][7][3]=1;dir[9][8][3]=1;dir[9][10][3]=1; dir[9][0][3]=1;/*K*/dir[10][2][0]=1;dir[10][3][0]=1;dir[10][9][0]=1; dir[10][7][0]=1;dir[10][8][0]=1;dir[10][10][0]=1; dir[10][4][0]=1; dir[10][0][1]=1;dir[10][1][1]=1;dir[10][6][1]=1; dir[10][4][1]=1;dir[10][9][1]=1;dir[10][7][1]=1; dir[10][10][1]=1; dir[10][2][3]=1;dir[10][5][3]=1;dir[10][6][3]=1; dir[10][7][3]=1;dir[10][8][3]=1;dir[10][10][3]=1; dir[10][0][3]=1; dir[10][1][2]=1;dir[10][5][2]=1;dir[10][6][2]=1; dir[10][8][2]=1;dir[10][9][2]=1;dir[10][10][2]=1; dir[10][3][2]=1; while(scanf("%d%d",&n,&m)) { if(n==-1&&m==-1) break; for(int i=0;i<=n*m;i++) f[i]=i; for(int i=0;i<n;i++) scanf("%s",a[i]); for(int i=0;i<n;i++) for(int j=0;j<m;j++) { if(dir[a[i][j]-'A'][a[i-1][j]-'A'][0]&&i-1>=0) { int fa=_find(i*m+j),fb=_find((i-1)*m+j); if(fa!=fb) fa>fb?f[fa]=fb:f[fb]=fa; } if(dir[a[i][j]-'A'][a[i][j-1]-'A'][2]&&j-1>=0) { int fa=_find(i*m+j),fb=_find(i*m+j-1); if(fa!=fb) fa>fb?f[fa]=fb:f[fb]=fa; } if(dir[a[i][j]-'A'][a[i+1][j]-'A'][1]&&i+1<n) { int fa=_find(i*m+j),fb=_find((i+1)*m+j); if(fa!=fb) fa>fb?f[fa]=fb:f[fb]=fa; } if(dir[a[i][j]-'A'][a[i][j+1]-'A'][3]&&j+1<m) { int fa=_find(i*m+j),fb=_find(i*m+j+1); if(fa!=fb) fa>fb?f[fa]=fb:f[fb]=fa; } } for(int i=0;i<n*m;i++) _find(i); sort(f,f+n*m); int tmp=f[0],num=1; for(int i=1;i<n*m;i++) { if(tmp!=f[i]) num++,tmp=f[i]; } printf("%d\n",num); }}
0 0
- hdu1198 并查集
- hdu1198并查集
- hdu1198--并查集
- hdu1198(并查集)
- hdu1198并查集
- hdu1198 并查集
- hdu1198 并查集
- 并查集应用hdu1198
- hdu1198 二维并查集
- hdu1198—并查集
- hdu1198(DFS/并查集)
- HDU1198(Farm Irrigation)-并查集
- HDU1198-Farm Irrigation(并查集应用)
- hdu1198 并查集(值得复习)
- Hdu1198 - Farm Irrigation - 并查集
- hdu1198(并查集的应用)
- hdu1198 Farm Irrigation ----并查集
- HDU1198(不必暴力,并查集应用,0MS)
- maven 常用命令
- sublime使用技巧
- Mysql中to_char()和str_to_date()函数
- 报错java.lang.IllegalstateException 解决的的思路
- Android-银联支付开发
- hdu1198 并查集
- CSS样式-垂直居中
- eNSP V390 USG6000v WEB配置(史上最详细)
- 将Json数据中的“字符串形式”的数组转为数组形式
- L3-007. 天梯地图-PAT团体程序设计天梯赛GPLT
- 3_MongoDB查找
- MyBatis学习(1)--MyBatis入门
- 【模拟】CSU 1807 最长上升子序列~ (2016湖南省第十二届大学生计算机程序设计竞赛)
- 字符串逆序