Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.2 kB
2
Indexable
Never
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
#define int long long int
#define el <<'\n'
#define pb push_back
#define F(x) for (auto &it:x)
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define cl(n, m) ((n+m-1)/m)
#define isON(n, k) (((n) >> (k)) & 1)
#define sz(x) (int)x.size()
#define dg(x) cout<<#x<<" = "<<x el;
#define Dg(x) int I=0;F(x)cout<<#x<<"["<<I++<<"] = "<<it el;

int dx[] = {0, 0, -1, 1, -1, 1, -1, 1};
int dy[] = {-1, 1, 0, 0, -1, -1, 1, 1};

const int N =1e5+5, MOD = 1000000007, oo = 0x3f3f3f3f3f3f3f3f;
//1000000007 998244353
void Wrong();
void Thaer() {
    ios::sync_with_stdio(false), cout.tie(nullptr), cin.tie(nullptr);
    //freopen("window.in", "r", stdin);
    //freopen("pow.out", "w", stdout);
    int T = 1;
  //  cin >> T;
    while (T--)Wrong(),cout ;
}
struct Edge{
    int u,v,w;
};
void Wrong() {
    string s, t;
    cin >> s >> t;
    int n;
    cin >> n;
    int dis[26][26] = {};
    for (int i = 0; i < 26; ++i) {
        for (int j = 0; j < 26; ++j) {
            if (i == j)continue;
            dis[i][j] = oo;
        }
    }
    for (int i = 0; i < n; ++i) {
        char u, v;
        int w;
        cin >> u >> v >> w;
        dis[u - 'a'][v - 'a'] = min(w, dis[u - 'a'][v - 'a']);
    }
    for (int i = 0; i < 26; ++i) {
        for (int j = 0; j < 26; ++j) {
            for (int k = 0; k < 26; ++k) {
                dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
            }
        }
    }
    if (sz(s) != sz(t)) {
        cout << -1;
        return;
    }
    int ans = 0;
    string str = "";
    for (int i = 0; i < sz(s); ++i) {
        int ch = 0,Dis=oo;
        for (int j = 0; j < 26; ++j) {
            if(dis[s[i] - 'a'][j] + dis[t[i] - 'a'][j] < Dis){
                Dis = dis[s[i] - 'a'][j] + dis[t[i] - 'a'][j];
                ch = j;
            }
        }
        if (Dis==oo) {
            cout << -1;
            return;
        }
        ans += Dis;
        str += char(ch + 'a');
    }
    cout << ans el << str;
}
int32_t main() { Thaer(); }
Leave a Comment