Cod sursa(job #2106936)
| Utilizator | Data | 16 ianuarie 2018 16:12:33 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.53 kb |
#include <iostream>
#include <fstream>
#define MAX 100001
using namespace std;
int n,m,cod,p[MAX],a,b;
int findr(int nd){
while(nd!=p[nd])nd=p[nd];
return nd;
}
int main()
{
ifstream f ("disjoint.in");
ofstream g ("disjoint.out");
f>>n>>m;
for(int i=1;i<=n;i++)p[i]=i;
for(int i=1;i<=m;i++){
f>>cod>>a>>b;
if(cod==1)p[findr(a)]=findr(b);
else {
if(findr(a)==findr(b))g<<"DA\n";
else g<<"NU\n";
}
}
f.close();
g.close();
return 0;
}
