Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<fstream>
- #include<vector>
- using namespace std;
- int inf = 1000000;
- int main() {
- ifstream fin("input.txt");
- ofstream fout("output.txt");
- int n, st, fn;
- fin >> n >> st >> fn;
- --st; --fn;
- vector<vector<int>> mas(n, vector<int>(n));
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < n; ++j) {
- fin >> mas[i][j];
- }
- }
- pair<bool, int> temp;
- temp.first = false; temp.second = inf;
- vector<pair<bool, int>> w(n, temp);
- w[st].second = 0;
- int v = st;
- for (int i = 0; i < mas.size(); ++i) {
- int minimal = inf;
- for (int j = 0; j < mas.size(); ++j) {
- if (!w[j].first && w[j].second <= minimal) {
- minimal = w[j].second;
- v = j;
- }
- }
- w[v].first = true;
- for (int j = 0; j < mas.size(); ++j) {
- if (mas[v][j] != -1)
- w[j].second = min(w[j].second, w[v].second + mas[v][j]);
- }
- }
- if (w[fn].second == inf) {
- fout << -1 << endl;
- return 0;
- }
- fout << w[fn].second << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment