Pagini recente » Cod sursa (job #2680750) | Cod sursa (job #523602) | Cod sursa (job #2761406) | Cod sursa (job #2554819) | Cod sursa (job #2493017)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll modp=1e9+7;
ll fact(ll a){
if(a==1) return 1;
return a*fact(a-1);
}
long long gcd(int a,int b){
if(a==0) return b;
return gcd(b%a,a);
}
ll lgp(ll a,ll b){
if(b==0) return 1;
ll t=lgp(a,b/2);
if(b%2==1) return (((t*t)%modp)*a)%modp;
return (t*t)%modp;
}
long long bin(long long arr[], long long l, long long r,long long x){
ll mid=l+(r-l)/2;
if(arr[mid]==x) return mid;
else if(arr[mid]>x) return bin(arr ,l,mid-1,x);
else if(arr[mid]<x)return bin(arr,mid+1,r,x);
else return -1;
}
long long funct(long long x){
if(x==0) return 0;
if(x%2==0) return funct(x/2);
else return funct(x/2)+1;
}
int n,m,par[100005],siz[100005],i,t;
int parent(int x){
if(x!=par[x]) par[x]=parent(par[x]);
return par[x];
}
void unire( int x, int y){
int x1=parent(x);
int y1=parent(y);
if(siz[y1]>siz[x1]) swap(x1,y1);
par[y1]=x1;
siz[x1]+=siz[y1];
}
int main(){
ifstream fin;
fin.open("disjoint.in");
ofstream fout;
fout.open("disjoint.out");
fin>>n>>m;
for(i=1;i<=n;i++){
par[i]=i;
siz[i]=1;
}
for(i=1;i<=m;i++){
fin>>t;
if(t==1){
int x,y;
fin>>x>>y;
unire(x,y);
}
else if(t==2){
int x,y;
fin>>x>>y;
if(parent(x)==parent(y)) fout<<"DA"<<"\n";
else fout<<"NU\n";
}
}
return 0;
}