Cod sursa(job #1856597)
Utilizator | Data | 25 ianuarie 2017 09:21:08 | |
---|---|---|---|
Problema | Paduri de multimi disjuncte | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.55 kb |
#include<fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int N, M, A[100001], cod, x, y;
int find(int x)
{
if (A[x]==x) return x;
int P=find(A[x]);
A[x]=P;
return P;
}
void unire (int a, int b)
{
a=find(a); b=find(b);
A[a]=b;
}
int main()
{
cin>>N>>M;
for(int i=1; i<=M; i++)
{
A[i]=i;
}
for(int i=1; i<=M; i++)
{
cin>>cod>>x>>y;
if (cod==1) unire(x,y);
else
if (find(x)==find(y)) cout<<"DA\n";
else cout<<"NU\n";
}
return 0;
}