Cod sursa(job #3039255)
| Utilizator | Data | 28 martie 2023 12:41:44 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int tata[100005];
int repr(int x)
{
while(x!=tata[x])
x=tata[x];
return x;
}
void update(int a, int b)
{
tata[repr(a)]=repr(b);
}
string query(int a, int b)
{
if(repr(a)==repr(b))
return "DA";
return "NU";
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
tata[i]=i;
for(int i=0;i<m;i++)
{
int a,b,c;
cin>>a>>b>>c;
if(a==1)
update(b,c);
else
cout<<query(b,c)<<'\n';
}
}
