题目链接:https://nanti.jisuanke.com/t/A1139
代码:
import java.io.;
import java.math.;
import java.lang.;
import java.util.;
public class Main {
static int [][]ars;
static int [] x = new int [10003];
static int [] y = new int [10003];
static int [] fa = new int[10003];
static int [] arr1= {3,1,7};
static int n;
static int m;
public static void main(String[] args) throws Exception {
String s = null;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
sc.nextLine();//缓冲
int k=0;
for(int i=1;i<=n;i++) {
s = sc.nextLine();
for(int j=0;j<s.length();j++) {
if(s.charAt(j)=='1') {
x[k]=i;
y[k++]=j+1;
}
}
}
//给K个人安排好父亲
for(int i=0;i<k;i++) {
fa[i]=i+1;
}
//合并,存在相同的X或Y,则合并父亲
for(int i=0;i<k;i++) {
for(int j=0;j<k;j++) {
if((x[i]==x[j] || y[i]==y[j])&&i!=j&&fa[i]!=fa[j]) {
if(fa[i]<fa[j]) {//因为考虑到会重复修改,以最小值为准
fa[j]=fa[i];
}else {
fa[i]=fa[j];
}
}
}
}
int cnt=0;
Set<Integer> set = new HashSet<Integer>();
//set去重
for(int i=0;i<k;i++) {
set.add(fa[i]);
}
System.out.println(set.size());
}
}