//05-树8 File Transfer(Java实现按照解题思路还是超时,也没找到用Java完美实现的代码囧)
import java.util.Scanner;
public class Main {
static int find(int[] c, int x){
if(c[x] <= 0){
return x;
}
else
return c[x] = find(c, c[x]);
}
static void input(int[] c, int c1, int c2){
int r1, r2;
r1 = find(c, c1);
r2 = find(c, c2);
if(c[r1] < c[r2]){
c[r1] += c[r2];
c[r2] = r1;
}
else{
c[r2] += c[r1];
c[r1] = r2;
}
}
static void read(Scanner s, int[] c){
int N = c.length;
String f;
int c1, c2;
f = s.next();
while(!f.equals("S")){
if(f.equals("I")){
c1 = s.nextInt();
c2 = s.nextInt();
input(c, c1, c2);
}
else if(f.equals("C")){
c1 = s.nextInt();
c2 = s.nextInt();
if(find(c, c1) == find(c, c2)) System.out.println("yes");
else System.out.println("no");
}
f = s.next();
}
}
static void test(int[] c){
int N = c.length;
int num = 0;
for(int i = 1; i < N; i ++){
if(c[i] < 0){
num ++;
}
}
if(num == 1){
System.out.println("The network is connected.");
}
else{
System.out.println("There are " + num + " components.");
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int[] cs = new int[N + 1];
for(int i = 1; i < N + 1; i ++){
cs[i] = -1;
}
read(s, cs);
test(cs);
}
}
05-树8 File Transfer
最新推荐文章于 2022-04-05 13:50:08 发布