Cod sursa(job #661938)

Utilizator sorina.vasileVasile Sorina sorina.vasile Data 15 ianuarie 2012 16:09:29
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<fstream>
using namespace std;
int mult[100001];

int predecesor(int x) //afla predecesorul unei multimi
{if(x!=mult[x])
mult[x]=predecesor(mult[x]);
return mult[x];
}

int main(){
    int n, m, x, y, cod;
fstream f("disjoint.in",ios::in);
fstream g("disjoint.out",ios::out);

f>>n>>m;
for(int i=1;i<=n;i++) //initializare multimi
mult[i]=i;

 for(int i=1;i<=m;i++)
{f>>cod>>x>>y;
 if(cod==1) mult[predecesor(x)]=predecesor(y); //schimba predecesorul multimii x
 if(cod==2) {if(predecesor(x)==predecesor(y)) g<<"DA\n"; //compara predecesorii multimilor
             else g<<"NU\n";}
}            
 f.close();
 g.close();
 return 0;}