您的位置:首页 > 其它

HDU_2586_How far away ?_MLE_floyd

2016-04-14 22:56 302 查看
#include<iostream>
#include<sstream>
#include<string>
#include<vector>
#include<list>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<algorithm>
#include<cmath>
#pragma warning(disable:4996)
using std::cin;
using std::cout;
using std::endl;
using std::stringstream;
using std::string;
using std::vector;
using std::list;
using std::pair;
using std::set;
using std::multiset;
using std::map;
using std::multimap;
using std::stack;
using std::queue;
int main()
{
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int T; cin >> T;
while (T--)
{
int vertex, query;
cin >> vertex >> query;
vector<vector<int>>matrix(vertex, (vector<int>)vertex);
for (int i = 0; i < vertex - 1; i++)
{
int first, second, weight;
cin >> first >> second >> weight;
matrix[first - 1][second - 1] = matrix[second - 1][first - 1] = weight;
}
for (int k = 0; k < vertex; k++)
{
for (int i = 0; i < vertex; i++)
{
for (int j = 0; j < vertex; j++)
{
if (i == j)
{
continue;
}
if (!matrix[i][j])
{
matrix[i][j] = matrix[i][k] + matrix[k][j];
}
else
{
matrix[i][j] = std::min(matrix[i][j], matrix[i][k] + matrix[k][j]);
}
}
}
}
for (int i = 0; i < query; i++)
{
int first, second;
cin >> first >> second;
cout << matrix[first - 1][second - 1] << endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: