首页 新闻 赞助 找找看

计蒜课中的“引爆ZD ”,按照并查集的思路,只是更改了代码的编写方式,但是程序就是无法全部通过,求帮助,在线等

0
悬赏园豆:140 [已关闭问题] 关闭于 2019-05-22 22:01

题目链接: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());

}
}

Anthony7的主页 Anthony7 | 菜鸟二级 | 园豆:204
提问于:2019-04-20 00:03
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册