Pagini recente » Cod sursa (job #1769122) | Cod sursa (job #1041648) | Cod sursa (job #3158147) | Cod sursa (job #694682) | Cod sursa (job #1734912)
import java.util.*;
import java.io.*;
/***
*
* @author Patrick
*
*/
public class Main {
public static int [ ] tata = new int [ 100999 ] ;
public static int [ ] rang = new int [ 100999 ] ;
public static void main(String[] args) throws FileNotFoundException {
InputReader cin=new InputReader (new FileInputStream ( "disjoint.in") );
OutputWriter out=new OutputWriter(new FileOutputStream ( "disjoint.out"));
int N = cin.readInt() ;
int M = cin.readInt() ;
for ( int i = 1 ; i <= N ; ++ i ) {
tata [ i ] = i ;
rang [ i ] = 1 ;
}
for ( int i = 1 ; i <= M ; ++ i ) {
int Tip = cin.readInt() ;
if ( Tip == 1 ) {
int X = cin.readInt() ;
int Y = cin.readInt() ;
unite ( X , Y ) ;
}
else {
int X = cin.readInt() ;
int Y = cin.readInt() ;
if ( stramos ( X ) == stramos ( Y ) ) {
out.print( "DA\n" );
}
else {
out.print( "NU\n" );
}
}
}
//out.print(123);
out.close() ;
}
public static int stramos ( int nod )
{
int R = nod ;
while ( R != tata [ R ] ) {
R = tata [ R ] ;
}
while ( nod != tata [ nod ] ) {
int aux = tata [ nod ] ;
tata [ nod ] = R ;
nod = aux ;
}
return R ;
}
public static void unite ( int x , int y )
{
x = stramos ( x ) ;
y = stramos ( y ) ;
if ( x == y ) {
return ;
}
if ( rang [ x ] > rang [ y ] ) {
rang [ x ] += rang [ y ] ;
tata [ y ] = tata [ x ] ;
}
else {
rang [ y ] += rang [ x ] ;
tata [ x ] = tata [ y ] ;
}
}
}
class InputReader {
private InputStream stream;
private byte[] buf = new byte[1024];
private int curChar;
private int numChars;
private SpaceCharFilter filter;
public InputReader(InputStream stream) {
this.stream = stream;
}
public int read() {
if (numChars == -1)
throw new InputMismatchException();
if (curChar >= numChars) {
curChar = 0;
try {
numChars = stream.read(buf);
} catch (IOException e) {
throw new InputMismatchException();
}
if (numChars <= 0)
return -1;
}
return buf[curChar++];
}
public int readInt() {
int c = read();
while (isSpaceChar(c))
c = read();
int sgn = 1;
if (c == '-') {
sgn = -1;
c = read();
}
int res = 0;
do {
if (c < '0' || c > '9')
throw new InputMismatchException();
res *= 10;
res += c - '0';
c = read();
} while (!isSpaceChar(c));
return res * sgn;
}
public String readString() {
int c = read();
while (isSpaceChar(c))
c = read();
StringBuilder res = new StringBuilder();
do {
res.appendCodePoint(c);
c = read();
} while (!isSpaceChar(c));
return res.toString();
}
public boolean isSpaceChar(int c) {
if (filter != null)
return filter.isSpaceChar(c);
return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
}
public String next() {
return readString();
}
public interface SpaceCharFilter {
public boolean isSpaceChar(int ch);
}
}
class OutputWriter {
private final PrintWriter writer;
public OutputWriter(OutputStream outputStream) {
writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
}
public OutputWriter(Writer writer) {
this.writer = new PrintWriter(writer);
}
public void print(Object...objects) {
for (int i = 0; i < objects.length; i++) {
if (i != 0)
writer.print(' ');
writer.print(objects[i]);
}
}
public void printLine(Object...objects) {
print(objects);
writer.println();
}
public void close() {
writer.close();
}
public void flush() {
writer.flush();
}
}