标签:style blog http color os io ar for 2014
题意:m条路,每条路上必须维持速度v,现在有一辆车,启动能量和结束能量为a, b,途中消耗能量为经过路径最大速度减去最小速度,现在每次循环给定起点终点,问最小能量花费
思路:最小瓶颈路,利用kruskal去搞
代码:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 205; const int M = 1005; int n, m, parent[N]; struct Edge { int u, v, val; bool operator < (const Edge& c) const { return val < c.val; } void read() { scanf("%d%d%d", &u, &v, &val); } } E[M]; int find(int x) { return x == parent[x] ? x : parent[x] = find(parent[x]); } int solve(int s, int e) { int ans = 1000000000; for (int i = 0; i < m; i++) { for (int j = 1; j <= n; j++) parent[j] = j; for (int j = i; j < m; j++) { int pu = find(E[j].u); int pv = find(E[j].v); if (pu != pv) parent[pu] = pv; if (find(s) == find(e)) { ans = min(ans, E[j].val - E[i].val); break; } } } return ans; } int main() { while (~scanf("%d%d", &n, &m)) { for (int i = 0; i < m; i++) E[i].read(); sort(E, E + m); int a, b, q, u, v; scanf("%d%d", &a, &b); scanf("%d", &q); while (q--) { scanf("%d%d", &u, &v); printf("%d\n", a + b + solve(u, v)); } } return 0; }
标签:style blog http color os io ar for 2014
原文地址:http://blog.csdn.net/accelerator_/article/details/38897735