Cod sursa(job #780255)

Utilizator stefanzzzStefan Popa stefanzzz Data 20 august 2012 09:30:17
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
#include <list>
#define MAXN 100005
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");

int n,m,cm[MAXN],a,b,tip;
list<int> multime[MAXN];
list<int>::iterator it;

int main()
{
    int i;
    f>>n>>m;
    for(i=1;i<=n;i++){
        multime[i].push_back(i);
        cm[i]=i;}
    for(i=1;i<=m;i++){
        f>>tip>>a>>b;
        if(tip==2)
            g<<((cm[a]==cm[b])?"DA\n":"NU\n");
        else{
            for(it=multime[b].begin();it!=multime[b].end();it++)
                cm[*it]=a;
            multime[a].splice(multime[a].end(),multime[b]);}}
    f.close();
    g.close();
    return 0;
}