Pagini recente » Cod sursa (job #673691) | Cod sursa (job #2416058) | Cod sursa (job #1125192) | Cod sursa (job #1377949) | Cod sursa (job #1886424)
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int cond, n, m,v[100003],nr1, nr2;
int find_f(int x)
{
if(v[x]<0)
{
return x;
}
else
return v[x]=find_f(v[x]);
}
void union_f(int a, int b)
{
int parenta,parentb;
parenta=find_f(a);
parentb=find_f(b);
if(v[parenta]>v[parentb])
v[parentb]=parenta;
else if(v[parentb]>v[parenta])
v[parenta]=parentb;
else
{
v[parenta]=parentb;
v[parentb]--;
}
}
int main()
{
fin>>n>>m;
for(int i=1; i<=n; i++)
v[i]=-1;
for(int k=1; k<=m; k++)
{
fin>>cond>>nr1>>nr2;
if(cond==1)
{
union_f(nr1,nr2);
}
else
{
if(find_f(nr1)==find_f(nr2))
fout<<"DA\n";
else fout<<"NU\n";
}
}
return 0;
}