Pagini recente » album2 | Cod sursa (job #2072987) | Cod sursa (job #1777124) | infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #2073185)
#include <iostream>
#define NMAX 10000
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[NMAX];
int hossz[NMAX];
int root(int pont)
{
int i=pont;
while(i!=t[i])
{
t[i]=t[t[i]];
i=t[i];
}
return i;
}
void unite(int x1,int x2)
{
int root1,root2;
root1=root(x1);
root2=root(x2);
if(root1!=root2)
t[root1]=root2;
if(root1!=root2)
{
if(hossz[root1]>hossz[root2])
{
t[root2]=root1;
hossz[root2]+=hossz[root2];
}
else
{
t[root1]=root2;
hossz[root2]+=hossz[root1];
}
}
}
void querry(int x1,int x2)
{
int root1,root2;
root1=root(x1);
root2=root(x2);
if(root1!=root2)
g<<"NU";
else
g<<"DA";
}
int main()
{
int n,m,muv,x1,x2;
f>>n>>m;
for(int i=1;i<=n;++i)
{
t[i]=i;
hossz[i]=1;
}
for(int i=0;i<m;++i)
{
f>>muv>>x1>>x2;
if(muv==1)
{
unite(x1,x2);
}
else
{
querry(x1,x2);
g<<"\n";
}
}
return 0;
}