Cod sursa(job #2575120)
| Utilizator | Data | 6 martie 2020 11:44:58 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m,r[1<<17];
int gasesteRad(int nod)
{ int k;
for(k=nod; nod!=r[nod];)
nod=r[nod];
for(; k!=r[k]; r[k]=nod)
k=r[k];
return nod;
}
int main()
{ f>>n>>m;
for(int i=1; i<=n; i++)
r[i]=i;
for(int t,x,y,rx,ry; f>>t>>x>>y;)
{ rx=gasesteRad(x),ry=gasesteRad(y);
if(t==1)
r[ry]=rx;
else
g<<(rx==ry ? "DA\n" : "NU\n");
}
g.close(); return 0;
}
