Cod sursa(job #2477271)

Utilizator KataIsache Catalina Kata Data 19 octombrie 2019 21:54:23
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#define N 100004
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int x[N],y[N],q[N],G[N],ind[N];

int grupa(int i);
int main()
{
    int n,m,i,cost=0;
    fin>>n>>m;
    for(i=1;i<=n;i++) G[i]=i;
    for(i=1;i<=m;i++)
    {
        fin>>q[i]>>x[i]>>y[i];
        ind[i]=i;
    }
    for(i=1;i<=m;i++)
        if (q[i]==1)
            G[grupa(x[ind[i]])]=grupa(y[ind[i]]);
        else if ( grupa(x[ind[i]])== grupa( y[ind[i]]))
             fout<<"DA"<<'\n';
             else
                fout<<"NU"<<'\n';

    return 0;
}

int grupa(int i)
{
	if (G[i]==i)
         return i;
	G[i]=grupa(G[i]);
        return G[i];
}