Pagini recente » Cod sursa (job #2957052) | Asociatia infoarena | Profil susan | Rating Duica Costinel (costty94) | Cod sursa (job #3293446)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int parent[100001],rang[100001];
int findparent(int n)
{
vector<int>b;
while(parent[n]!=n)
{
b.push_back(n);
n=parent[n];
}
for(int i=0;i<b.size();i++)
parent[b[i]]=n;
return n;
}
void unire(int a,int b)
{
int parintea=findparent(a),parinteb=findparent(b);
if(parintea==parinteb)
return;
if(rang[parintea]<rang[parinteb])
{
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(nullptr);
int n,m,t,x,y;
fin>>n>>m;
for(int i=1;i<=n;i++)
{
parent[i]=i;
rang[i]=1;
}
for(int i=1;i<=m;i++)
{
fin>>t>>x>>y;
if(t==1)
{
int parintex=findparent(x),parintey=findparent(y);
if(rang[parintex]>rang[parintey])
parent[parintex]=parintey;
else if(rang[parintex]<rang[parintey])
parent[parintey]=parintex;
else
{
parent[parintex]=parintey;
rang[parintey]++;
}
}
else
{
bool r=(findparent(x)==findparent(y));
if(r==1)
fout<<"DA\n";
else fout<<"NU\n";
}
}
return 0;
}