Pagini recente » Istoria paginii utilizator/zethpix | Cod sursa (job #1203684) | Diferente pentru preoni-2005/runda-2/solutii intre reviziile 24 si 13 | Monitorul de evaluare | Cod sursa (job #497714)
Cod sursa(job #497714)
#include <fstream>
#define sizen 100010
#define sizem 100010
long n,m,k,x,y,i;
long t[sizen],r[sizem];
using namespace std;
int init() {
//kezdetben minden elem sajat magara mutat a rang pedig 1
for (int p=1;p<=n;++p) {
t[p]=p;
r[p]=1;
}
return 0;
}
int insert(long egyik, long masik) {
//a kisebb ranguhoz kotom
if (r[egyik]<r[masik]) t[egyik]=masik;
else t[masik]=egyik;
if (r[egyik]==r[masik]) ++r[masik];
return 0;
}
int find(long ker) {
long p,q;
//addig megyek a faba fel amig nem a gyoker
for (p=ker;p!=t[p];p=t[p]);
//a keresettet egybool a gyokerhez kotom h legkozelebb egybol meglegyen
while (t[ker]!=p) {
q=t[ker];
t[ker]=p;
ker=q;
}
}
int main() {
ifstream in("disjoint.in");
ofstream out("disjoint.out");
in >> n >> m;
init();
for (i=1;i<=m;++i) {
in >> k >> x >> y;
if (k==1) insert(x,y); else
if (k==2)
if (find(x)==find(y)) out << "DA\n";
else out << "NU\n";
}
in.close();
out.close();
return 0;
}