暂无链接

最优路线

【题目描述】

一个nnn个点mmm条边的无重边无自环的无向图,点有点权,边有边权,定义一条路径的权值为路径经过的点权的最大值乘边权最大值。求任意两点间的权值最小的路径的权值。

【输入格式】

第一行两个整数n,mn,mn,m,分别表示无向图的点数和边数。
第二行nnn个正整数,第iii个正整数表示点iii的点权。
接下来mmm行每行三个正整数ui,vi,wiu_i,v_i,w_iui​,vi​,wi​,分别描述一条边的两个端点和边权。

【输出格式】

nnn行每行nnn个整数,第iii行第jjj个整数表示从iii到jjj的路径的最小权值,如果从iii不能到达jjj,则该值为−1-1−1。特别地,当i=ji=ji=j时输出000。

【样例 1】
path. in

3 3
2 3 3
1 2 2
2 3 3
1 3 1

path.out

0 6 3
6 0 6
3 6 0

【样例 2】

见选手目录下 path. in/path.ans。

【数据范围与约定】

对于20%20\%20%的数据,n&lt;=5,m&lt;=8n&lt;=5,m&lt;=8n<=5,m<=8。
对于50%50\%50%的数据,n&lt;=50n&lt;=50n<=50。
对于100%100\%100%的数据,n&lt;=500,m&lt;=n∗(n−1)/2n&lt;=500,m&lt;=n*(n-1)/2n<=500,m<=n∗(n−1)/2,边权和点权不超过10910^9109。

题解

先考虑505050分做法,dp[i][j][k]dp[i][j][k]dp[i][j][k]表示iii到jjj,路径上最长边长度为kkk时最大点点权的最小值,类似Floyed\mathcal{Floyed}Floyed更新一下就可以做到O(n4)O(n^4)O(n4)。

事实上,我们不需要那么麻烦,mx[i][j]mx[i][j]mx[i][j]表示iii到jjj路径上最长边的最小值,使用Floyed\mathcal{Floyed}Floyed来更新,但是枚举中继点kkk的时候我们要按点权从小到大枚举,这样iii到jjj路径上点权最大的点就一定是i,j,ki,j,ki,j,k中的一个,于是便可以更新答案为min(ans,mx[i][j]×max(val[k],max(val[i],val[j]))min(ans,mx[i][j]\times max(val[k],max(val[i],val[j]))min(ans,mx[i][j]×max(val[k],max(val[i],val[j]))。

代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int M=505;
struct sd{int val,id;}pt[M];
bool operator<(sd a,sd b){return a.val<b.val;}
int val[M],mx[M][M],n,m;
ll ans[M][M];
void in()
{scanf("%d%d",&n,&m);memset(mx,127,sizeof(mx));for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)if(i!=j)ans[i][j]=LONG_LONG_MAX;for(int i=1;i<=n;++i)scanf("%d",&val[i]),pt[i]=(sd){val[i],i};for(int i=1,a,b,c;i<=m;++i)scanf("%d%d%d",&a,&b,&c),mx[a][b]=mx[b][a]=c,ans[a][b]=ans[b][a]=1ll*max(val[a],val[b])*mx[a][b];
}
void ac()
{sort(pt+1,pt+1+n);for(int k=1;k<=n;++k)for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)if(mx[i][j]>max(mx[i][pt[k].id],mx[pt[k].id][j]))mx[i][j]=max(mx[i][pt[k].id],mx[pt[k].id][j]),ans[i][j]=min(ans[i][j],1ll*mx[i][j]*max(pt[k].val,max(val[i],val[j])));for(int i=1;i<=n;++i,putchar(10))for(int j=1;j<=n;++j)printf("%lld ",ans[i][j]==LONG_LONG_MAX?-1:ans[i][j]);
}
int main(){in(),ac();}

[2018.10.17 T2] 最优路线相关推荐

  1. 2018.10.17考试

    2018.10.17考试总结 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到自己来到了魔法城堡, 但一扇巨大的石门阻拦了他通向城堡内的路.正当他沮丧之际,突然发现门上有一处机关, ...

  2. ssl提高组周三备考赛【2018.10.17】

    前言 爆零- 成绩 爆蛋的就不放了 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 111 2017hjq2017hjq2017 ...

  3. noip模拟 2018 10 17

    刺客信条(AC) Description 故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害,决心成为一名刺客.最终,凭借着他的努力和出众的天 ...

  4. 2018.10.17第二次课及预习

    课堂笔记: 1.操作系统分类:windows linux unix   终端工具:connectbot Linux发行版 time  https://commons.wikimedia.org/wik ...

  5. 训练日志 2018.10.7

    国庆7天假期,一直在学校没有回去,前几天在补 Java 交作业,后几天在看状压DP和树形DP,这几天宿舍里只有自己,在学习之余也能静下心来好好想想自己究竟想要什么. 关于 ACM,其实在去年省赛后,有 ...

  6. 【比赛报告】2018.10.11校赛[8-2情人节欢乐赛] NOIP练习赛卷十二

    比赛时间:2018.10.10 选手:lrllrl 成绩 100+100+100=300 用时:约1h T1 果实计数 显然易得,答案为 b n m o d    k b^n\mod k bnmodk ...

  7. 2018.10.9模拟赛

    2018.10.9模拟赛 T1 trade 正解:贪心 据说lyd讲过但并没有印象QAQ,考场上现推浪费了不少时间 其实就开个小根堆,每次把堆顶取出来看它是不是比当前的 a[i]a[i]a[i] 小, ...

  8. 【比赛报告】2018.10.15校赛[2015-9-13 NOIP模拟赛 by hzwer] NOIP练习赛卷十四

    比赛时间:2018.10.15 选手:lrllrl 用时:2h 得分:100+10+90=200 最初想法是一个背包问题.首先背包问题的模型肯定是不行的,但是我们可以列出状态转移方程后发现,每个状态决 ...

  9. Alluxio Meetup 2018.10.28北京进行,欢迎交流

    #搜狗如何将Spark Shuffle迁移到上千台Alluxio机器集群,服务知识图谱? #七牛云如何用Alluxio在云端搭建通用深度学习平台? #京东又是如何定制基于普雷斯托的查询平台? 欢迎大家 ...

  10. 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第2场省赛 2020.10.17】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 说明:大部分题解思路及程序代码 源自 蓝桥杯 官网视频(Java B组历年真题解析) -- 郑未老师. ...

最新文章

  1. 剑指offer(Java实现) 平衡二叉树
  2. Eclipse——WindowBuilder插件
  3. SQL server 系统优化--通过执行计划优化索引(1) (转)
  4. IIS 7.0的集成模式和经典模式
  5. margin-top绑架父节点问题的分析
  6. python数据可视化散点图案例_Python数据可视化—散点图_python 数据可视化
  7. python如何输出整数逆序_python字符串类型及操作
  8. Leetcode 931.下降路径最小和
  9. 爬虫教程( 1 ) --- 初级、基础、实践
  10. RPC规范接口实现模块Flask-JSONRPC
  11. 【爬虫】使用八爪鱼爬行百度地图美食店数据
  12. 滴滴小程序框架Mpx2.0
  13. Python3【pyecharts 0.5.11】pyecharts图表生成总结
  14. Tobii眼动仪系列软件安装与使用
  15. java 新浪 发送邮件_使用javamail新浪郵箱發送遇到的問題(已解決)
  16. 通过AI工具(ChatGPT接口)生成一字未改的论文,查重率4.2%,可以直接当作论文使用
  17. 《合成孔径雷达成像——算法与实现》之【end】RADARSAT-1数据处理
  18. 不洁尸体的“诅咒”:靠死者的馈赠长高,却换来了另一种怪病
  19. css左侧盒子固定右边自适应
  20. 如何免费给PDF文件添加注释?

热门文章

  1. 2020牛客多校训练1 I 1or2(拆点拆边带花树一般图最大匹配)
  2. 刷题记录 kuangbin带你飞专题一:简单搜索
  3. C++/QT控制通过VISA控制硬件设备,超级容易学会的控制硬件方法
  4. android获取当前显示的view,Android中ViewPager获取当前显示的Fragment
  5. 简单的notepad将\n转化为换行
  6. 浅谈MySQL存储引擎
  7. spring的IOC——依赖注入的两种实现类型
  8. 【BZOJ 1050】1050: [HAOI2006]旅行comf (动态SPFA)
  9. hihoCoder 1369 网络流一·Ford-Fulkerson算法 (网络流学习#1 记录)
  10. centos rm -rf 恢复删除的文件