View Code of Problem 3818

#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.


Back to problem 3818