之前图相关的都用的领接数组,这换成了领接矩阵,半天没反应过来,我去。。。。。
#include<iostream>
#include<algorithm>
#include<fstream>
#include<map>
#include<vector>
#include<string>
#include<iostream>
using namespace std;
void dfs(vector<vector<int>> &path, int s, int e, int v,int &res,int L,int M) {
if (L > M)
return;
if(L==M&&s==e){
res = min(res, v);
return;
}
for (int i = 0; i < path[0].size(); ++i) {
if (path[s][i] != 0)
dfs(path, i, e, v + path[s][i], res, L + 1, M);
}
}
vector<vector<int>> solve(vector<vector<int>> &path,int M) {
vector<vector<int>> res(path.size(), vector<int>(path[0].size(), -1));
for(int i=0;i<path.size();++i)
for (int j = 0; j < path[0].size(); ++j) {
int r=INT32_MAX;
dfs(path,i,j,0,r,0,M);
res[i][j] = r;
}
return res;
}
int main(void){
int N, M;
while (cin >> N >> M) {
int N1, N2;
cin >> N1 >> N2;
vector<vector<int>> path;
for (int i = 0; i < N1; ++i) {
vector<int> temp;
int data;
for (int j = 0; j < N2; ++j) {
cin >> data;
temp.push_back(data);
}
path.push_back(temp);
}
vector<vector<int>> res = solve(path, M);
for (auto v : res) {
for (auto i : v)
cout << i << " ";
cout << endl;
}
}
getchar();
return 0;
}