Pagini recente » Cod sursa (job #2668314) | Cod sursa (job #507378) | Cod sursa (job #1219304) | Cod sursa (job #550614) | Cod sursa (job #2359021)
#include <fstream>
using namespace std;
const int N = 100001;
//struct muchii {int n1; int n2; int cost;}v[5001];
int t[N];
int rad (int x)
{
if (t[x]==0)
return x;
t[x]=rad(t[x]);
return t[x];
}
void reun (int x, int y)
{
int rx=rad(x);
int ry=rad(y);
if (rx!=ry)
t[ry]=rx;
}
bool verif (int x, int y)
{
return (rad(x)==rad(y));
}
int main()
{
ifstream in ("disjoint.in");
ofstream out ("disjoint.out");
//int n, m, k, minim=0, ales[101]={0}, aux=0, poz, c=0, x;
int n, m, tip, x ,y;
in>>n>>m;
/*
for (int i=1; i<=m; i++)
{
in>>v[i].n1>>v[i].n2>>v[i].cost;
if(v[i].cost>minim)
minim=v[i].cost;
}
in>>k;
for (int i=1; i<=k; i++)
{
in>>x;
ales[v[x].n1]=ales[v[x].n2]=1;
c=c+v[x].cost;
}
for (int i=1; i<n; i++)
{
aux=minim+1;
for (int j=1; j<=m; j++)
{
if (ales[v[j].n1]+ales[v[j].n2]==1 && aux>v[j].cost)
{
aux=v[j].cost;
poz=j;
}
}
c=c+v[poz].cost;
if (ales[v[poz].n1]==0) ales[v[poz].n1]=1;
else ales[v[poz].n2]=1;
}
out<<c;
*/
for (int i = 0; i < m; i++)
{
in >> tip >> x >> y;
if (tip == 1)
{
reun(x, y);
}
else
{
if (verif(x, y))
{
out << "DA";
}
else
{
out << "NU";
}
out << "\n";
}
}
return 0;
}