Cod sursa(job #1496903)

Utilizator serbanSlincu Serban serban Data 5 octombrie 2015 19:22:05
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>

using namespace std;

int n, m;
int v[100005];

void mergeList(int a, int b) {
    int old = v[b];
    for(int i = 1; i <= n; i ++)
        if(v[i] == old)
            v[i] = v[a];
}

int main()
{
    FILE *f = fopen("disjoint.in", "r");
    FILE *g = fopen("disjoint.out", "w");
    int x, y, t;
    fscanf(f, "%d %d", &n, &m);

    int k = 0;
    for(int i = 1; i <= n; i ++) {
        v[i] = i;
    }

    for(int i = 1; i <= m; i ++) {
        fscanf(f, "%d %d %d", &t, &x, &y);
        if(t == 1) k++, mergeList(x, y);
        else {
            if(v[x] == v[y])
                fprintf(g, "DA\n");
            else fprintf(g, "NU\n");
        }
    }
    return 0;
}