Pagini recente » Cod sursa (job #2320801) | Clasament 123235125 | Cod sursa (job #2806459) | Cod sursa (job #655490) | Cod sursa (job #2341711)
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n, m ;
int daddy[100005], h[100005] ;
int radacina(int i)
{
while( daddy[i] != i )
{
h[daddy[i]]++ ;
i = daddy[i] ;
}
return i ;
}
void conect(int x, int y)
{
int hardx , hardy ;
hardx = radacina(x) ;
hardy = radacina(y) ;
if( h[hardx] >= h[hardy] )
{
if( h[hardx] == h[hardy] )
h[hardx] ++ ;
daddy[hardy] = hardx ;
}
else
{
daddy[hardx] = hardy ;
}
}
bool ver(int x,int y)
{
if( radacina(x) == radacina(y) )
return true ;
else
return false ;
}
int main()
{
in >> n >> m ;
for(int i = 1 ; i<=n ; i++)
{
daddy[i] = i ;
h[i] = 1 ;
}
for(int i = 1 ; i<=m ; i++)
{
int cod , x , y ;
in >> cod ;
in >> x >> y ;
if( cod == 1 )
{
conect(x,y) ;
}
else
{
if( ver(x,y) == 1 )
out << "DA" << "\n" ;
else
out << "NU" << "\n" ;
}
}
return 0;
}