Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <string>
- #include <queue>
- using namespace std;
- int Min = 1000000;
- void dfs(int u, int du, int l, int st, int w, vector<int>& com, vector<vector<int>>& v) {
- com[u] = 1;
- if (l < 2) {
- for (int i = 0; i < v.size(); ++i) {
- if (v[u][i] != 0) {
- dfs(i, u, l + 1, st, w + v[u][i], com, v);
- }
- }
- }
- else {
- if (v[u][st] != 0 && st != du) {
- Min = min(Min, w + v[u][st]);
- }
- }
- }
- int main() {
- std::ifstream fin("input.txt");
- std::ofstream fout("output.txt");
- int n;
- fin >> n;
- vector<vector<int>> v(n, vector<int>(n, 0));
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < n; ++j)
- fin >> v[i][j];
- }
- vector<int> com(n, 0);
- for (int i = 0; i < n; ++i) {
- com[i] = 1;
- dfs(i, i, 0, i, 0, com, v);
- com[i] = 2;
- }
- fout << Min << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment