Submission #64339000


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

int N;
string S, T;
int rem = 0;
set<int> adj[26];
int deg[26];

int dfs(int v, vector<int>& sccNum, stack<int>& S, vector<vector<int>>& scc, vector<int>& ord, int& cnt) {
	ord[v] = ++cnt; S.push(v);
	int result = ord[v];
	for (int u: adj[v]) {
		if (ord[u] == -1) result = min(result, dfs(u, sccNum, S, scc, ord, cnt));
		else if (sccNum[u] == -1) result = min(result, ord[u]);
	}
	if (result == ord[v]) {
		vector<int> temp;
		while (true) {
			int t = S.top(); S.pop();
			temp.push_back(t);
			sccNum[t] = scc.size();
			if (t == v) break;
		}
		sort(temp.begin(), temp.end());
		scc.push_back(temp);
	}
	return result;
}

void getSCC(vector<vector<int>>& scc, vector<int>& sccNum) {
	stack<int> S; vector<int> ord(26, -1); int cnt = -1;
	for (int i = 0; i < 26; ++i) if (ord[i] == -1) dfs(i, sccNum, S, scc, ord, cnt);
}

void solve() {
    cin >> N;
    cin >> S >> T;
    for (int i = 0; i < N; ++i) adj[S[i] - 'a'].insert(T[i] - 'a');
    for (int i = 0; i < 26; ++i) for (auto j: adj[i]) ++deg[j];
    for (int i = 0; i < 26; ++i) if (adj[i].size() > 1) {
        cout << -1;
        return;
    }
    for (int i = 0; i < 26; ++i) {
        if (adj[i].empty()) ++rem;
    }
    
    vector<vector<int>> scc;
	vector<int> sccNum(26, -1);
	getSCC(scc, sccNum);

    int ans = 0;
    for (int i = 0; i < 26; ++i) if (!adj[i].empty() && *adj[i].begin() != i) ++ans;
    for (auto g: scc) {
        if (g.size() == 26) {
            cout << -1;
            return;
        }
        if (g.size() == 1) continue;
        bool flag = false;
        for (auto i: g) if (deg[i] != 1) flag = true;
        if (!flag && rem == 0) {
            cout << -1;
            return;
        }
        ++ans;
    }
    cout << ans;
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    solve();
}

Submission Info

Submission Time
Task E - Replace
User danielhO9
Language C++ 17 (gcc 12.2)
Score 0
Code Size 1914 Byte
Status WA
Exec Time 4 ms
Memory 3772 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 500
Status
AC × 4
AC × 49
WA × 38
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 02_random2_00.txt, 02_random2_01.txt, 02_random2_02.txt, 02_random2_03.txt, 02_random2_04.txt, 02_random2_05.txt, 02_random2_06.txt, 02_random2_07.txt, 02_random2_08.txt, 02_random2_09.txt, 02_random2_10.txt, 02_random2_11.txt, 02_random2_12.txt, 02_random2_13.txt, 02_random2_14.txt, 02_random2_15.txt, 02_random2_16.txt, 02_random2_17.txt, 02_random2_18.txt, 02_random2_19.txt, 02_random2_20.txt, 02_random2_21.txt, 02_random2_22.txt, 02_random2_23.txt, 02_random2_24.txt, 02_random2_25.txt, 02_random2_26.txt, 02_random2_27.txt, 02_random2_28.txt, 02_random2_29.txt, 02_random2_30.txt, 02_random2_31.txt, 02_random2_32.txt, 02_random2_33.txt, 02_random2_34.txt, 02_random2_35.txt, 02_random2_36.txt, 02_random2_37.txt, 02_random2_38.txt, 02_random2_39.txt, 02_random2_40.txt, 02_random2_41.txt, 02_random2_42.txt, 02_random2_43.txt, 02_random2_44.txt, 02_random2_45.txt, 02_random2_46.txt, 02_random2_47.txt, 02_random2_48.txt, 02_random2_49.txt, 02_random2_50.txt, 02_random2_51.txt, 02_random2_52.txt, 02_random2_53.txt, 02_random2_54.txt, 02_random2_55.txt, 02_random2_56.txt, 02_random2_57.txt, 02_random2_58.txt, 02_random2_59.txt, 02_random2_60.txt, 02_random2_61.txt, 02_random2_62.txt, 02_random2_63.txt, 02_random2_64.txt, 02_random2_65.txt, 03_random3_00.txt, 03_random3_01.txt, 03_random3_02.txt, 04_handmade_00.txt, 04_handmade_01.txt, 04_handmade_02.txt, 04_handmade_03.txt, 04_handmade_04.txt, 04_handmade_05.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3580 KiB
00_sample_01.txt AC 1 ms 3484 KiB
00_sample_02.txt AC 1 ms 3480 KiB
00_sample_03.txt AC 1 ms 3516 KiB
01_random_00.txt AC 3 ms 3744 KiB
01_random_01.txt AC 4 ms 3724 KiB
01_random_02.txt AC 2 ms 3692 KiB
01_random_03.txt AC 1 ms 3700 KiB
01_random_04.txt AC 1 ms 3620 KiB
01_random_05.txt AC 1 ms 3604 KiB
01_random_06.txt AC 2 ms 3592 KiB
01_random_07.txt AC 2 ms 3624 KiB
02_random2_00.txt AC 2 ms 3696 KiB
02_random2_01.txt AC 2 ms 3772 KiB
02_random2_02.txt AC 2 ms 3652 KiB
02_random2_03.txt AC 2 ms 3660 KiB
02_random2_04.txt AC 2 ms 3664 KiB
02_random2_05.txt AC 2 ms 3624 KiB
02_random2_06.txt AC 2 ms 3612 KiB
02_random2_07.txt AC 2 ms 3672 KiB
02_random2_08.txt AC 2 ms 3544 KiB
02_random2_09.txt AC 2 ms 3700 KiB
02_random2_10.txt AC 2 ms 3624 KiB
02_random2_11.txt AC 2 ms 3680 KiB
02_random2_12.txt AC 2 ms 3660 KiB
02_random2_13.txt AC 2 ms 3644 KiB
02_random2_14.txt AC 2 ms 3704 KiB
02_random2_15.txt AC 2 ms 3672 KiB
02_random2_16.txt AC 2 ms 3652 KiB
02_random2_17.txt AC 2 ms 3636 KiB
02_random2_18.txt WA 2 ms 3648 KiB
02_random2_19.txt AC 2 ms 3580 KiB
02_random2_20.txt WA 2 ms 3704 KiB
02_random2_21.txt AC 2 ms 3640 KiB
02_random2_22.txt AC 2 ms 3768 KiB
02_random2_23.txt AC 2 ms 3684 KiB
02_random2_24.txt AC 2 ms 3672 KiB
02_random2_25.txt AC 2 ms 3628 KiB
02_random2_26.txt AC 2 ms 3692 KiB
02_random2_27.txt AC 2 ms 3684 KiB
02_random2_28.txt AC 2 ms 3756 KiB
02_random2_29.txt AC 2 ms 3652 KiB
02_random2_30.txt WA 2 ms 3616 KiB
02_random2_31.txt WA 2 ms 3680 KiB
02_random2_32.txt WA 2 ms 3672 KiB
02_random2_33.txt WA 2 ms 3716 KiB
02_random2_34.txt WA 2 ms 3764 KiB
02_random2_35.txt WA 2 ms 3700 KiB
02_random2_36.txt WA 2 ms 3684 KiB
02_random2_37.txt WA 2 ms 3536 KiB
02_random2_38.txt WA 2 ms 3756 KiB
02_random2_39.txt WA 2 ms 3760 KiB
02_random2_40.txt WA 2 ms 3680 KiB
02_random2_41.txt WA 2 ms 3608 KiB
02_random2_42.txt WA 2 ms 3688 KiB
02_random2_43.txt WA 2 ms 3544 KiB
02_random2_44.txt WA 2 ms 3768 KiB
02_random2_45.txt WA 2 ms 3580 KiB
02_random2_46.txt WA 2 ms 3652 KiB
02_random2_47.txt WA 2 ms 3772 KiB
02_random2_48.txt WA 2 ms 3688 KiB
02_random2_49.txt WA 2 ms 3644 KiB
02_random2_50.txt WA 2 ms 3684 KiB
02_random2_51.txt WA 2 ms 3652 KiB
02_random2_52.txt WA 2 ms 3724 KiB
02_random2_53.txt WA 2 ms 3624 KiB
02_random2_54.txt WA 2 ms 3668 KiB
02_random2_55.txt WA 2 ms 3724 KiB
02_random2_56.txt WA 2 ms 3672 KiB
02_random2_57.txt WA 2 ms 3724 KiB
02_random2_58.txt WA 2 ms 3644 KiB
02_random2_59.txt WA 2 ms 3536 KiB
02_random2_60.txt WA 2 ms 3700 KiB
02_random2_61.txt WA 2 ms 3700 KiB
02_random2_62.txt WA 2 ms 3580 KiB
02_random2_63.txt WA 2 ms 3680 KiB
02_random2_64.txt WA 2 ms 3684 KiB
02_random2_65.txt WA 2 ms 3764 KiB
03_random3_00.txt AC 2 ms 3680 KiB
03_random3_01.txt AC 2 ms 3696 KiB
03_random3_02.txt AC 2 ms 3584 KiB
04_handmade_00.txt AC 2 ms 3612 KiB
04_handmade_01.txt AC 1 ms 3508 KiB
04_handmade_02.txt AC 1 ms 3496 KiB
04_handmade_03.txt AC 2 ms 3656 KiB
04_handmade_04.txt AC 2 ms 3584 KiB
04_handmade_05.txt AC 2 ms 3648 KiB