Cod sursa(job #1333196)

Utilizator NacuCristianCristian Nacu NacuCristian Data 2 februarie 2015 21:23:12
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <stdio.h>
#include <vector>

using namespace std;

vector <int> s[100000];
int n,m;




void rezolvare1(int x,int y)
{
    s[x].push_back(y);
    for(int i=0;i<s[y].size();i++)
    {
        s[x].push_back(s[y][i]);
        s[s[y][i]].clear();
        s[s[y][i]].push_back(x);
    }
    s[y].clear();
    s[y].push_back(x);
}


void rezolvare2(int x, int y)
{
    if(s[x][0]==y ||s[y][0]==x || s[x][0] == s[y][0])
    {
        printf("DA\n");
        return;
    }
    printf("NU\n");
    return;
}


void citire()
{
    freopen("disjoint.in","r",stdin);
    scanf("%d %d",&n,&m);

    for(int i=0;i<m;i++)
    {
        int t,a,b;
        scanf("%d %d %d",&t,&a,&b);
        if(t==1)
            rezolvare1(b,a);
        else
            rezolvare2(a,b);

    }
}

int main()
{
    freopen("disjoint.out","w",stdout);
    citire();
    return 0;
}