Cod sursa(job #983960)
| Utilizator | Data | 13 august 2013 01:21:47 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.49 kb |
using namespace std;
#include<fstream>
ifstream eu("disjoint.in");
ofstream tu("disjoint.out");
#define Nmax 100005
int N,M,TT[Nmax];
void unite(int a,int b)
{
TT[a]=b;
}
int find(int a)
{
while(a!=TT[a])
a=TT[a];
return a;
}
int main()
{
int a,b,op;
eu>>N>>M;
for(int i=1;i<=N;i++)
TT[i]=i;
while(M--)
{
eu>>op>>a>>b;
if(op==1)
unite(find(a),find(b));
if(op==2)
if(find(a)==find(b))
tu<<"DA\n";
else
tu<<"NU\n";
}
return 0;
}
