Pagini recente » Cod sursa (job #2680734) | Cod sursa (job #2206693) | Cod sursa (job #1088015) | Cod sursa (job #505261) | Cod sursa (job #1795015)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX=1000;
int t[NMAX+5],h[NMAX+5];
int findset (int u)
{
while (t[u]!=u)
u=t[u];
return u;
}
void unionset (int u,int v)
{
if (h[u]==h[v])
{
t[v]=u;
h[u]++;
}
else
{
if (h[u]>h[v])
t[v]=u;
else
t[u]=v;
}
}
int main()
{
int n,m,i,u,v,x;
fin>>n>>m;
for (i=1;i<=n;i++)
{
t[i]=i;
h[i]=1;
}
for (i=1;i<=m;i++)
{
fin>>x>>u>>v;
if (x==1)
{
if (findset(u)!=findset(v))
unionset(u,v);
}
else{
if (findset(u)==findset(v))
fout<<"DA"<<"\n";
else
fout<<"NU"<<"\n";
}
}
fin.close();
fout.close ();
return 0;
}