Cod sursa(job #1274539)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 23 noiembrie 2014 22:33:01
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#include <map>
#include <vector>
#define nmax 100010
using namespace std;
FILE *f=fopen("disjoint.in","r");
FILE *g=fopen("disjoint.out","w");
int n,m,p[nmax];
int x,y,cod,k,r;
vector <int> v[nmax];
vector <int>::iterator it,itmax;



int main()
{int i,j;
fscanf(f,"%d %d",&n,&m);

for (i=1;i<=n;i++) {v[i].push_back(i);
                    p[i]=i;}
while (m!=0)
        {fscanf(f,"%d %d %d\n",&cod,&x,&y);
         if (cod==2) {if (p[x]==p[y]) fprintf(g,"DA\n");
                                 else fprintf(g,"NU\n");
                      }
                else {k=max(p[x],p[y]);
                      r=min(p[x],p[y]);

                      for (it=v[k].begin();it!=v[k].end();it++)
                            {i=*it;
                             p[i]=r;
                             v[r].push_back(i);}
                      v[k].clear();
                      }
         m--;
         }


return 0;
}