Cod sursa(job #277029)
| Utilizator | Data | 11 martie 2009 14:35:33 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.53 kb |
#include<fstream.h>
#define dim 100001
#define min(k,kk) (k)<(kk)?(k):(kk)
int comp[dim];
int main()
{
int n,x,m,i,y,nr,c,cc,j;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f>>n>>m;
for(i=1;i<=n;i++)
comp[i]=i;
for(i=1;i<=m;i++)
{
f>>nr>>x>>y;
if(nr==1)
{
c=min(comp[x],comp[y]);
cc=(comp[x]+comp[y])-c;
for(j=1;j<=n;j++)
if(comp[j]==cc) comp[j]=c;
}
else if(comp[x]==comp[y]) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
f.close();
g.close();
return 0;
}