#include <iostream> #include <algorithm> #include <cstring> #include <stack> #include <vector> #include <set> using namespace std; int bfs(vector<vector<int>> path,int n,int tar){ if(n==tar) return 0; int min=999999; for(int i=0;i<path[n].size();i++){ if(i!=n&&path[n][i]!=0){ int l=bfs(path,i,tar)+path[n][i]; if(l<min) min=l; } } return min; } int main() { int n,m,k; while(cin>>n>>m>>k){ vector<vector<int>> path(n,vector<int>(n)); for(int i=0;i<m;i++){//初始化,输入边完成 int a,b; cin>>a>>b; cin>>path[a-1][b-1]; } for(int i=0;i<k;i++){ int a,b; cin>>a>>b; cout<<bfs(path,a-1,b-1)<<endl; } } return 0; } |
Double click to view unformatted code.