TEMA

Wrong answer (100%)

Hugo preguntado 1 year ago

Alguém consegue achar o(s) erro(s)?

#include <bits/stdc++.h>

using namespace std;
int fin(int p, vector<int> &id){
    if(id[p] == p)
        return p;
    return id[p] = fin(id[p], id);
}

void uni(int p, int q, vector<int> &sz, vector<int> &id){
    p = fin(p, id);
    q = fin(q, id);
    if(p == q) return;
    if(sz[q] > sz[p]){
        int aux;
        aux = p;
        p = q;
        q = aux;
    }
    id[q] = p;
    sz[p] += sz[q];

}
int main(){
    int n,v,e;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>v>>e;
        char a,b;
        vector<int> sz(v,1);
        vector<int> id(v);
        vector<set<int>> g(v);

        for(int k=0;k < v;k++)
            id[k] = k;

        for(int j=0;j < e;j++){
            cin>>a>>b;
            g[a - 'a'].insert(b - 'a');
            g[b- 'a'].insert(a - 'a');
        }
        for(int k=0;k < v;k++){
            for(auto it: g[k]){
                uni(k, it,sz,id);
            }
        }

        map<int, set<char>> m;
        for(int j=0;j < v;j++){
           int aux =  fin(j, id);
           m[aux].insert(j + 'a');
        }

        cout<<"Case #"<<i<<":"<<endl;
        for(auto it: m){
            for(auto it1: it.second){
                cout<<it1<<",";
            }
            cout<<endl;
        }

        int cont = m.size();
        cout<<cont<<" connected components"<<endl;

        cout<<endl;
    }

    return 0;
}

Este tema aún no ha sido contestado. ¡Sé el primero!

Recuerda no enviar soluciones. Tu mensaje puede ser revisado por nuestros moderadores.