Cod sursa(job #1487561)

Utilizator DoraBenzoVelicu Teodora DoraBenzo Data 16 septembrie 2015 23:57:27
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 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[101], *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--;
    }
    for(int i=1;i<=n;i++)
            {
                for(q=p[i];q;q=q->next)
                    cout<<q->inf<<" ";
                cout<<"\n";
            }
    return 0;
}