Pagini recente » Cod sursa (job #2349829) | Cod sursa (job #1281932) | Cod sursa (job #2429020) | Cod sursa (job #2438599) | Cod sursa (job #1051382)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
#define max 100003
int uneste(int tati[max], int x, int y)
{
int j=x,i=y,sx=0,sy=0;
if(tati[x-1]==tati[x])
while(tati[j]==tati[x]) j--;
while(tati[j]==tati[x])
{
j++;
sx++;
}
if(tati[y-1]==tati[y])
while(tati[i]==tati[y]) i--;
while(tati[i]==tati[y])
{
i++;
sy++;
}
i--;
j--;
if(sx>sy)
while(tati[i]==tati[y])
{
tati[i]=tati[x];
i--;
}
else
while(tati[j]==tati[x])
{
tati[j]=tati[y];
j--;
}
return 0;
}
int main()
{
int tati[max],n,m,i,t,x,y;
fin>>n>>m;
for(i=1; i<=n; i++)
tati[i]=i;
for(i=1; i<=m; i++)
{
fin>>t>>x>>y;
if(t==1)
uneste(tati, x, y);
else
if(tati[x]==tati[y]) fout<<"DA"<<'\n';
else fout<<"NU"<<'\n';
}
return 0;
}