Cod sursa(job #1333508)
| Utilizator | Data | 3 februarie 2015 11:39:27 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.46 kb |
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int i,N,M,c,x,y;
int v[100001];
int fi(int x){return (v[x]==x?x:v[x]=fi(v[x]));}
void u(int x,int y){v[fi(x)]=fi(y);}
int main()
{
f>>N>>M;
for (i=1;i<=N;++i)v[i]=i;
while (M--)
{ f>>c>>x>>y;
if (c == 2)
if (fi(x)==fi(y))g<<"DA\n";else g<<"NU\n";
else u(x,y);
}
return 0;
}
