Pagini recente » Cod sursa (job #2623637) | Cod sursa (job #1575660) | Cod sursa (job #359885) | Cod sursa (job #1963835) | Cod sursa (job #1632271)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
const int Nmax=100005;
int TT[Nmax],RG[Nmax];
void unite(int x,int y)
{
if(RG[x]>RG[y])
TT[y]=x;
if(RG[x]<RG[y])
TT[x]=y;
if(RG[x]==RG[y])
{
TT[x]=y;
RG[y]++;
}
}
int find(int x)
{
while(x!=TT[x])
x=TT[x];
return x;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
TT[i]=i;
RG[i]=1;
}
int x,y,cod;
for(int i=1;i<=m;i++)
{fin>>cod>>x>>y;
if(cod==1)
unite(x,y);
else
if(find(x) == find(y))
fout<<"DA\n";
else
fout<<"NU\n";
}
}