Submission #1328718

#TimeUsernameProblemLanguageResultExecution timeMemory
1328718benjaminshihZamjena (COCI18_zamjena)C++20
14 / 70
11 ms1604 KiB
#include <bits/stdc++.h>
using namespace std;
int n;
map<string,string> par;
map<string,string> nums;
struct DSU{
    void init(const string& x) {
        if (par.find(x) == par.end()) {
            par[x] = x;
        }
    }
    string find(string x){
        if(x != par[x]) par[x] = find(par[x]);
        return par[x];
    }
    bool unite(string x,string y){
        auto px = par[x],py = par[y];
        if(px == py) return 1;

        bool px_is_num = isdigit(px[0]);
        bool py_is_num = isdigit(py[0]);

        if (px_is_num && py_is_num) {
            return false;
        }

        if(px_is_num){
            par[y] = px;
        }   
        else{
            par[x] = py;
        }
        return 1;
    }
};
int main(){
    ios::sync_with_stdio(0);cin.tie(0);
    cin >> n;
    vector<string> vs1(n);
    vector<string> vs2(n);
    DSU dsu;
    for(int i = 0 ; i < n ; i++) {cin >> vs1[i];dsu.init(vs1[i]);}
    for(int i = 0 ; i < n ; i++) {cin >> vs2[i];dsu.init(vs2[i]);}

    bool ok = 1;
    for(int i = 0 ; i < n ; i++){
        if(!dsu.unite(vs1[i],vs2[i])){
            ok = 0;
            break;
        }
    }
    if(ok) cout << "DA";
    else cout << "NE";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...