Pagini recente » Cod sursa (job #2717615) | Cod sursa (job #2397335) | Cod sursa (job #1669709) | Cod sursa (job #2713586) | Cod sursa (job #1360903)
#include <fstream>
#define NMAX 100002
using namespace std;
ifstream f("disjoint.in") ;
ofstream g("disjoint.out") ;
int TT[NMAX] , Rang[NMAX] ;
int m,n ;
int Radacina (int x)
{
int R=x,y ;
while(R!=TT[R])
R=TT[R] ;
while(x!=TT[x])
{
y=TT[x] ;
TT[x]=R ;
x=y ;
}
return R ;
}
int unite(int x,int y)
{
if(Rang[x]>Rang[y])
TT[y]=x ;
else
TT[x]=y ;
if(Rang[x]==Rang[y])
Rang[y]++ ;
}
int main()
{
int cod,a,b,x ;
f>>n>>m ;
for(int i=1;i<=n;i++)
{
TT[i]=i ;
Rang[i]=1 ;
}
for(int i=1;i<=m;i++)
{
f>>cod>>a>>b ;
if(cod==2)
{
if(Radacina(a)==Radacina(b))
g<<"DA\n" ;
else
g<<"NU\n" ;
}
else
unite(Radacina(a),Radacina(b)) ;
}
return 0;
}