[NOIP模拟] 路径统计 floyd
来源:互联网 发布:电梯广告盈利 知乎 编辑:程序博客网 时间:2024/05/29 19:37
About:
2017.11.09 T2
Solution:
这道题的瓶颈在于怎么将点权和边权结合到一起。我们可以先将点权排序,这样我们可以很轻松地找到对应的路径点权最大,对于每次的 floyd 我们可以有这样的式子 :
Code :
#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <iostream>#include <cmath>#include <ctime>#include <map>#include <vector>#include <queue>#define LL long longusing namespace std;inline int read() { int i = 0, f = 1; char ch = getchar(); while(!isdigit(ch)) { if(ch == '-') f = -1; ch = getchar(); } while(isdigit(ch)) { i = (i << 3) + (i << 1) + ch - '0'; ch = getchar(); } return i * f;}const int MAXN = 505;int f[MAXN][MAXN], b[MAXN];struct point { int x, pos; inline bool operator < (const point & a) const { return x < a.x; }};point a[MAXN];LL g[MAXN][MAXN];int main() { memset(f, 0x3f3f3f3f, sizeof(f)); memset(g, 0x3F, sizeof(g)); int n = read(), m = read(); for(register int i = 1; i <= n; ++i) a[i].x = read(), a[i].pos = i, f[i][i] = 0; sort(a + 1, a + n + 1); for(register int i = 1; i <= n; ++i) b[a[i].pos] = i; for(register int i = 1; i <= m; ++i) { register int x = read(), y = read(); f[b[x]][b[y]] = read(); f[b[y]][b[x]] = f[b[x]][b[y]]; } for(register int k = 1; k <= n; ++k) for(register int i = 1; i <= n; ++i) { if(f[i][k] == 0x3f3f3f3f) continue; for(register int j = 1; j <= n; ++j) { if(f[k][j] == 0x3f3f3f3f) continue; f[i][j] = min(f[i][j], max(f[i][k], f[k][j])); if(f[i][j] <= 0x3f3f3f3f && i <= k && j <= k) g[i][j] = min(g[i][j], (LL)a[k].x * f[i][j]); } } for(register int i = 1; i <= n; ++i) for(register int j = 1; j <= n; ++j) if(f[i][j] == 0x3f3f3f3f) g[i][j] = -1; for(register int i = 1; i <= n; ++i) { for(register int j = 1; j <= n; ++j) cout<<g[b[i]][b[j]]<<' '; putchar('\n'); }}
阅读全文
0 0
- [NOIP模拟] 路径统计 floyd
- [NOIP模拟] 路径统计
- NOIP模拟(11.07)T2 路径统计
- NOIP模拟 路径统计 【弗洛伊德算法】
- [NOIP模拟赛]统计
- [NOIP模拟]路径
- [NOIP模拟]长跑路径
- [NOIP2017模拟]路径统计
- [NOIP2017模拟]路径统计
- UVa 125 Numbering Paths (路径统计+Floyd)
- 【2012noip模拟】最长路径(path)
- NOIP模拟:长跑路径(Dijkstra)
- [NOIP模拟][dp][codevs]p1401逆序对统计
- noip模拟赛 小球游戏 cqbzoj3391(网格路径模型)
- Noip模拟
- 【NOIP模拟考三】水资源——二分答案+Floyd验证 day1 first 信号连接
- 【NOIP模拟】20151004模拟
- 【NOIP模拟】 20151005模拟
- 图片手风琴效果
- eclipse下maven打jar包并引入依赖包
- mfc接收udp组播264视频流
- 避难向导 树的直径 树上倍增 二分答案
- centos7.2 sonarqube代码质量管理平台的安装与使用
- [NOIP模拟] 路径统计 floyd
- java中复写方法和同名变量的调用问题
- js基础——运算符
- 查询只选修了一门课程的学生
- 栈
- GStreamer学习笔记
- C#/.NET整数的三种强制类型转换(int)、Convert.ToInt32()、int.Parse()的区别
- Redis配置文件参数说明
- php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)