Pagini recente » Cod sursa (job #2869288) | Cod sursa (job #1645471) | Cod sursa (job #2136861) | Cod sursa (job #1890460) | Cod sursa (job #1462209)
import java.util.*;
import java.io.*;
public class Main{
public static int[] rang = new int[100005];
public static int[] parinte = new int[100005];
public static int n, m;
public static void main(String[] args){
Scanner reader = null;
PrintWriter writer = null;
try {
reader = new Scanner(new FileInputStream("disjoint.in"));
} catch (FileNotFoundException e) {
System.out.println("Fisier intrare lipsa!");
return;
}
try{
writer = new PrintWriter("disjoint.out");
} catch (FileNotFoundException e) {
System.out.println("Fisier iesire lipsa!");
return;
}
n = reader.nextInt();
m = reader.nextInt();
for(int i = 1; i <= n; ++i){
parinte[i] = i;
rang[i] = 1;
}
for(int i = 1; i <= m; ++i){
int c, n1, n2;
c = reader.nextInt();
n1 = reader.nextInt();
n2 = reader.nextInt();
if(c == 1)
uneste(gaseste(n1),gaseste(n2));
else{
if(gaseste(n1) == gaseste(n2))
writer.println("DA");
else
writer.println("NU");
}
}
writer.close();
reader.close();
}
private static int gaseste(int x){
int f = x;
while(parinte[f] != f)
f = parinte[f];
while(x != parinte[x]){
int aux = parinte[x];
parinte[x] = f;
x = aux;
}
return f;
}
private static void uneste(int x, int y){
if(rang[x] > rang[y])
parinte[y] = x;
else
parinte[x] = y;
if(rang[x] == rang[y])
++ rang[y];
}
}