Cod sursa(job #1487563)

Utilizator DoraBenzoVelicu Teodora DoraBenzo Data 16 septembrie 2015 23:58:43
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");

int n, m, o;

struct nod
{
    int inf;
    nod *next;
} *p[100100], *q;

void crearemultime()
{
    for(int i=1; i<=n; i++)
    {
         q = new nod;
         q->inf = i;
         q->next=p[i];
         p[i]=q;
    }
}

void multimi(nod *q, int y)
{
    while (q->next != NULL)
        q = q->next;
    for(nod *w=p[y]; w; w=w->next)
    {
        q->next = w;
        q = w;
    }
}

void cauta(int x, int y)
{
    q = new nod;
    for(q = p[x]; q; q=q->next)
        if(q->inf == y)
        {
            fout<<"DA"<<"\n";
            return;
        }
    fout<<"NU"<<"\n";
}

int main()
{
    fin >> n >> m;
    crearemultime();

    int x, y;

    while(m)
    {
        fin >> o >> x >> y;
        if(o == 1)
            multimi(p[x], y);
        else
            cauta(x, y);
        m--;
    }

    return 0;
}