../ Competitive Programming
-rw-r--r--aguang1.4 KiB1 min read

Leet Code Daily 2024-07-27 - Minimum Cost to Convert String

Solution

Floyd-Warshall Algorithm.

Code

c++
constexpr int kFarAway = 2600000;

class Solution {
public:
    long long minimumCost(string source, string target, vector<char>& original,
                          vector<char>& changed, vector<int>& cost) {

        const int n = source.size(), m = original.size();

        auto distance = vector<vector<int>>(26, vector<int>(26, kFarAway));
        for (int i = 0; i < 26; i++) {
            distance[i][i] = 0;
        }
        for (int i = 0; i < m; i++) {
            const int p = original[i] - 'a';
            const int q = changed[i] - 'a';
            distance[p][q] = min(distance[p][q], cost[i]);
        }
        for (int k = 0; k < 26; k++) {
            for (int i = 0; i < 26; i++) {
                for (int j = 0; j < 26; j++) {
                    distance[i][j] =
                        min(distance[i][j], distance[i][k] + distance[k][j]);
                }
            }
        }

        long long ret = 0;
        for (int i = 0; i < n; i++) {
            const int p = source[i] - 'a';
            const int q = target[i] - 'a';
            if (distance[p][q] >= kFarAway) {
                return -1;
            }
            ret += distance[p][q];
        }
        return ret;
    }
};

COMMAND INTERFACE

↑ ↓ navigate · Enter execute · Esc exit · try “whoami”

Loading filesystem…

:help aguang.xyz

A personal website disguised as an operating system.

Ctrl / Cmd + K
Command palette + full-text search
Tab / Shift + Tab
Move between links and controls
Enter
Open a focused link or search result
↑ / ↓ in search
Navigate search results
In a directory filter
Enter/Done or ↓ focuses a result; Esc clears the filter
Esc
Clear a search or close a window