Cod sursa(job #1128372)

Utilizator superman_01Avramescu Cristian superman_01 Data 27 februarie 2014 16:47:06
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
#define NMAX 100005
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int TT[NMAX];
int n,m;
 
inline int find ( int x )
{
     
    int R;
    for( R=x ; R!=TT[R] ; R=TT[R]);
     
    return R;
}
void unite ( int x,int y)
{
    TT[y]=x;
}
 
 
int main ( void )
{
    f>>n>>m;
    for(int i(1); i <= n ; ++i )
        TT[i]=i;
    for(int i(1) ; i <= m ; ++i )
    {
        int type,x,y;
        f>>type>>x>>y;
        if( type == 2 )
        {
            if( find(x) == find(y) )
              g<<"DA\n";
            else
                g<<"NU\n";
        }
        else
            unite(find(x),find(y)); 
    }
    f.close();
    g.close();
    return 0;
     
}