Untitled

 avatar
unknown
plain_text
3 years ago
2.3 kB
2
Indexable
#include <stdio.h>

char N[200005];
char X[200005];
char Y[200005];
char A[200005];
char B[200005];
char C[200005];
char D[200005];
int ABandAC(int i);
int ABandBC(int i);
int ABC(int i);
int x,y,z;

int main(void){
    int n,m;

    scanf("%d %d",&n,&m);
    scanf("%s",N);
    for(int i=0;i<m;i++){
        scanf(" %c %c",&X[i],&Y[i]);
    }
    for(int i=0;i<m;i++){
        if(X[i]==Y[i]) continue;
        else if(ABC(i) && D[x]!='\0'){
            if(z==1 && C[x]!='\0'){
                C[x]=Y[i];
            }
            else if(z==0 && C[x]!='\0'){
                C[x]=B[x];
                B[x]=Y[i];
            }
            else if(z==1){
                D[x]=Y[i];
            }
            else {
                D[x]=C[x];
                C[x]=B[x];
                B[x]=Y[i];
            }
        }
        else{
            A[y]=X[i];
            B[y]=Y[i];
            y++;
        }
    }
    for(int i=0;i<=y;i++){
        for(int j=0;j<n;j++){
            if(C[i]=='\0'){
                if(N[j]==A[i]){
                    N[j]=B[i];
                }
                else if(N[j]==B[i]){
                    N[j]=A[i];
                }
            }
            else if(D[i]=='\0'){
                if(N[j]==A[i]){
                    N[j]=B[i];
                }
                else if(N[j]==B[i]){
                    N[j]=C[i];
                }
                else if(N[j]==C[i]){
                    N[j]=A[i];
                }
            }
            else{
                if(N[j]==A[i]){
                    N[j]=B[i];
                }
                else if(N[j]==B[i]){
                    N[j]=C[i];
                }
                else if(N[j]==C[i]){
                    N[j]=D[i];
                }
                else if(N[j]==D[i]){
                    N[j]=A[i];
                }
            }
        }
    }
    printf("%s\n",N);

    return 0;
}

int ABC(int i){
    for(int j=i-1;j>=0;j--){
        if(X[i]==Y[j] || Y[i]==Y[j]){
            z=0;
            x=j;
            return 1;
        }
        else if(X[i]==X[j] || Y[i]==X[j]){
            x=j;
            z=1;
            return 1;
        }
    }
    return 0;
}