Cod sursa(job #2645313)

Utilizator Ionut2791Voicila Ionut Marius Ionut2791 Data 27 august 2020 18:43:15
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <utility>
#include <deque>
#include <queue>
#include <vector>
#include <limits.h>
#include <map>
using namespace std;

const int LIM = 100005;
int n, m, x;
bool gasit;
vector <int> graf[LIM];

void dfs(int nod, bool in[LIM]){
    //cout << nod << " " << x << "\n";
    if(nod == x){
        gasit = true;
        return;
    }
    in[nod] = true;

    for(size_t i = 0; i < graf[nod].size(); ++i)
        if(in[graf[nod][i]] == false){
            dfs(graf[nod][i], in);
        }
}

int main() {
    //ifstream fin("date.in");
    ifstream fin("disjoint.in");
    ofstream fout("disjoint.out");
    fin >> n >> m;

    for(int i = 1; i <= m; ++i){
        int cod, a, b;
        fin >> cod >> a >> b;

        if(cod == 1){
            graf[a].push_back(b);
            graf[b].push_back(a);
        }
        else{
            bool frA[LIM] ={0};
            gasit = false;
            x = b;
            dfs(a, frA);

            if(gasit == true)
                fout << "DA\n";
            else
                fout << "NU\n";

        }

    }

    return 0;
}