Pagini recente » Cod sursa (job #649617) | Cod sursa (job #2597374) | Cod sursa (job #1778157) | Cod sursa (job #770405) | Cod sursa (job #1437162)
#include <iostream>
#include <fstream>
using namespace std;
int findset(int *t,int x)
{
int i=x;
while (t[x]!=0) x=t[x];
if (i!=x) t[i]=x;
return x;
}
void uniune(int *t,int x,int y)
{
if (findset(t,x)!=findset(t,y)) t[x]=y;
}
int main()
{
ifstream f("disjoint.in");
int a,b,c,*t,n,m;
f>>n>>m;
t=new int [n+1];
for (int i=1;i<=n;i++) t[i]=0;
ofstream g("disjoint.out");
for (int i=0;i<m;i++)
{
f>>a>>b>>c;
if (a==1) uniune(t,b,c);
else if (findset(t,b)==findset(t,c)) g<<"DA\n";
else g<<"NU\n";
}
return 0;
}