Cod sursa(job #1330565)

Utilizator Consti.001FMI Dranca Constantin Consti.001 Data 30 ianuarie 2015 19:41:39
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int l[100001];
int n,m,i,j,k,ok,x,y,q;
void read()
{
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        l[i]=-1;
    }
}
void reunion(int x, int y)
{
    if(l[x]>l[y])
    {
        l[y]+=l[x];
        l[x]=y;
    }
    else
    {
        l[x]+=l[y];
        l[y]=x;
    }
}
void caut(int x, int y)
{
    while(l[x]>0)
    x=l[x];
    while(l[y]>0)
    y=l[y];
    if(x==y)
    g<<"DA\n";
    else
    g<<"NU\n";
}
void solve()
{
    for(k=1;k<=m;k++)
    {
        f>>q>>x>>y;
        if(q==1)
        reunion(x,y);
        else
        if(q==2)
        caut(x,y);
    }
}
int main()
{
    read();
    solve();
}