#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg using namespace std; const int N = + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ; int n, m, s1, t1, s2, t2, tot, head[N], d[N][N], dp[N];
vector<PII> G[N]; struct Edge {
int from, to, w, nx;
} edge[]; void add(int u, int v, int w) {
edge[tot].from = u;
edge[tot].to = v;
edge[tot].w = w;
edge[tot].nx = head[u];
head[u] = tot++;
} void Dij(int S, int *d) {
priority_queue<PII, vector<PII>, greater<PII> > que;
que.push(mk(, S)), d[S] = ;
while(!que.empty()) {
PII now = que.top(); que.pop();
int u = now.se, dis = now.fi;
if(dis > d[u]) continue;
for(int i = head[u]; ~i; i = edge[i].nx) {
int v = edge[i].to, w = edge[i].w;
if(dis + w < d[v]) {
d[v] = dis + w;
que.push(mk(d[v], v));
}
}
}
} int dfs(int u) {
if(~dp[u]) return dp[u];
dp[u] = ;
for(int i = ; i < G[u].size(); i++) {
int v = G[u][i].se, w = G[u][i].fi;
dp[u] = max(dp[u], dfs(v) + w);
}
return dp[u];
} int cal(int s1, int t1, int s2, int t2) {
memset(dp, -, sizeof(dp));
for(int i = ; i <= n; i++) G[i].clear();
for(int i = ; i < tot; i++) {
int u = edge[i].from, v = edge[i].to, w = edge[i].w, f = ;
if(d[s1][u] + d[t1][v] + w == d[s1][t1]) f++;
if(d[s2][u] + d[t2][v] + w == d[s2][t2]) f++;
if(f == ) {
G[u].push_back(mk(w, v));
}
}
int ans = ;
for(int i = ; i <= n; i++)
ans = max(ans, dfs(i));
return ans;
} int main() {
memset(head, -, sizeof(head));
memset(d, inf, sizeof(d));
scanf("%d%d", &n, &m);
scanf("%d%d%d%d", &s1, &t1, &s2, &t2);
for(int i = ; i <= m; i++) {
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
add(u, v, w); add(v, u, w);
} Dij(s1, d[s1]);
Dij(t1, d[t1]);
Dij(s2, d[s2]);
Dij(t2, d[t2]); int ans = ;
ans = max(ans, cal(s1, t1, s2, t2));
ans = max(ans, cal(s1, t1, t2, s2)); printf("%d\n", ans);
return ;
} /*
*/

最新文章

  1. spring-listener&amp;spring-task注解版本
  2. 每日Scrum(3)
  3. 删除ecshop底部共执行个查询Gzip 已禁用,占用内存方法
  4. JAVA 多态和异常处理作业——动手动脑以及课后实验性问题
  5. Rotate Matrix by One
  6. java.lang.Exception: Socket bind failed 服务器端口冲突--&gt;修改端口
  7. 通过js子页面回写父页面,改变父页面控件的值
  8. 模拟IIC总线汇编程序软件包
  9. EventBus通信
  10. mongo设计(三)
  11. thinkphp 分组、页面跳转与ajax
  12. nefu 449 超级楼梯 &amp;&amp;nefu 911 跨楼梯
  13. elasticsearch -- Logstash实现mysql同步数据到elasticsearch
  14. Javascript高级编程学习笔记(66)—— 事件(10)变动事件
  15. 软件包.deb的安装及卸载------dpkg
  16. js回溯法计算最佳旅行线路
  17. c# automapper 使用(一)
  18. PTA——输出各位数字
  19. Java动态性之反射机制(reflection)
  20. Ubuntu中的“资源管理器”System Monitor

热门文章

  1. codeforces 691E 矩阵快速幂+dp
  2. python学习(十四)正则表达式
  3. Linux常用网络工具:批量主机服务扫描之netcat
  4. 「电脑应用」在mac上使用aria2
  5. 第2章-Vue.js指令
  6. centos7下安装配置jenkins+git+maven+jdk
  7. 洛谷P1124 文件压缩
  8. 其他:strtok和sscanf结合输入读取一行整数
  9. 重构改善既有代码设计--重构手法07:Remove Assignments to Parameters (移除对参数的赋值)
  10. [POJ3370]&amp;[HDU1808]Halloween treats 题解(鸽巢原理)