Pagini recente » Cod sursa (job #2015578) | Cod sursa (job #1437556) | Cod sursa (job #1942952) | Cod sursa (job #1400853) | Cod sursa (job #3041053)
#include <fstream>
#include <vector>
#define NMAX 100005
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m;
vector<int> l[NMAX];
int cc[NMAX];
int cod, x, y;
int minim;
int maxim, imax;
int i, j;
void dfs(int);
int main()
{
fin >>n>>m;
for (i = 1; i <= n; ++i) cc[i] = i;
for (i = 1; i <= m; ++i)
{
fin >>cod>>x>>y;
if (cod == 1)
{
if (cc[x] < cc[y])
{
minim = cc[x];
maxim = cc[y]; imax = y;
}
else
{
minim = cc[y];
maxim == cc[x]; imax = x;
}
dfs(imax);
l[x].push_back(y);
l[y].push_back(x);
}
else
fout <<(cc[x] == cc[y]? "DA\n": "NU\n");
}
fout.close();
return 0;
}
void dfs(int vf)
{
cc[vf] = minim;
for (auto vfnou: l[vf])
if (cc[vfnou] == maxim)
dfs(vfnou);
}