Cod sursa(job #3264590)
| Utilizator | Data | 22 decembrie 2024 17:19:28 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.73 kb |
#include <bits/stdc++.h>
#define nmax 100005
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,t[nmax],task;
int get_root(int x)
{
while(t[x])
{
x=t[x];
}
return x;
}
void join(int x ,int y)
{
int rx=get_root(x),ry=get_root(y);
t[rx]=ry;
}
int main()
{
fin>>n>>m;
while(m--)
{
fin>>task;
if(task==1)
{
int x,y;
fin>>x>>y;
join(x,y);
}
else
{
int x,y;
fin>>x>>y;
if(get_root(x)==get_root(y))
fout<<"DA"<<'\n';
else
fout<<"NU\n";
}
}
return 0;
}
