Nu aveti permisiuni pentru a descarca fisierul grader_test19.ok
Cod sursa(job #454976)
Utilizator | Data | 12 mai 2010 21:21:20 | |
---|---|---|---|
Problema | Paduri de multimi disjuncte | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.78 kb |
#include <fstream>
#define size 100010
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
long n,m,k,x,y,i,t[size],r[size];
int init()
{
for (int p=1;p<=n;++p){
t[p]=p;
r[p]=1;
}
return 0;
}
long find(long w)
{
long u,m;
for (u=w;t[u]!=u;u=t[u]);
/* while (t[w]!=w){
m=t[w];
t[w]=u;
w=m;
}
*/
return u;
}
int ins(long e,long a)
{
/* if (r[e]>r[a]) t[a]=e; else
t[e]=a;
if (r[e]==r[a]) ++r[a];*/
t[a]=e;
return 0;
}
int main()
{
in >> n >> m;
init();
for (i=1;i<=m;++i){
in >> k >> x >> y;
if (k==1) ins(x,y); else
if (k==2)
if (find(x)==find(y)) out << "DA\n"; else
out << "NU\n";
}
in.close();
out.close();
return 0;
}