Cod sursa(job #1154975)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 26 martie 2014 15:44:14
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int cod,x,y,N,M,aux,rad_x,rad_y,i,ok,cont;
int v[100001];
void verifica(int x,int y)
{
    int yy=y;
    while(v[x]!=0)
    {
        aux=v[x];
        x=aux;
    }
    rad_x=x;
    while(v[y]!=0)
    {
        aux=v[y];
        y=aux;
    }
    rad_y=y;
    if(rad_x==rad_y)
    {
        g<<"DA"<<"\n";
        ok=0;
        while(v[yy]!=0)
        {
            cont=v[yy];
            v[yy]=rad_x;
            yy=cont;
        }
        if(ok==1)
            v[yy]=rad_x;
    }
    else
        g<<"NU"<<"\n";
}
int main()
{
    f>>N>>M;
    for(i=1;i<=M;i++)
    {
        f>>cod>>x>>y;
        if(cod==1)
            v[y]=x;
        else
            verifica(x,y);
    }
    f.close();
    return 0;
}