Cod sursa(job #572902)
| Utilizator | Data | 5 aprilie 2011 18:44:14 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include<fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int N=100010;
int n,m,v[N];
void compresie(int x);
void read()
{
int x,y,z;
in>>n>>m;
for(int i=0;i<=n;i++)
v[i]=i;
for(int i=1;i<=m;i++)
{
in>>z>>x>>y;
if(z==1)
{
v[x]=v[y];
compresie(x);
compresie(y);
}
else
if(v[x]==v[y])
out<<"DA\n";
else
out<<"NU\n";
}
}
void compresie(int x)
{
if(v[x]==x)
return;
compresie(v[x]);
v[x] = v[v[x]];
}
int main()
{
read();
return 0;
}
