Cod sursa(job #2352562)
| Utilizator | Data | 23 februarie 2019 13:44:09 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include<fstream>
using namespace std;
ifstream in("disjoint.in");ofstream out("disjoint.out");
int s[100005];
int SUP(int a)
{
if(s[a]==a)
return a;
return s[a]=SUP(s[a]);
}
void UN(int h,int k)
{
s[h]=SUP(h);
s[k]=SUP(k);
s[s[h]]=s[k];
}
int main()
{
int n,m,c,x,y,i;
in>>n>>m;
for(i=1;i<=n;i++)
s[i]=i;
for(i=1;i<=m;i++)
{
in>>c>>x>>y;
if(c==1)
UN(x,y);
else
if(SUP(x)==SUP(y))
out<<"DA"<<'\n';
else
out<<"NU"<<'\n';
}
return 0;
}
