PKU 3311 Hie with the Pie 状态DP
2024-08-31 14:33:53
Floyd + 状态DP
Watashi的板子
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; const int INF = (int) 1e8; int dp[<<][]; //dp[S][v] 表示还需访问的集合为S, 现在在v点
int d[][];
int n; void floyd() {
for (int k = ; k <= n; k++) {
for (int i = ; i <= n; i++)
for (int j = ; j <= n; j++)
d[i][j] = min(d[i][j], d[i][k]+d[k][j]);
}
} void print() {
for (int i = ; i <= n; i++) {
for (int j = ; j <= n; j++)
printf("%d ", d[i][j]);
puts("");
}
} int main() {
#ifdef Phantom01
freopen("PKU3311.txt", "r", stdin);
#endif // Phantom01 while (scanf("%d", &n)!=EOF) {
if (==n) break;
for (int i = ; i <= n; i++)
for (int j = ; j <= n; j++)
scanf("%d", &d[i][j]);
// print();
floyd();
// print(); for (int i = ; i <= n; i++)
for (int S = ; S < (<<(n+)); S++)
dp[S][i] = INF; dp[(<<(n+))-][] = ;
for (int S = (<<(n+))-; S >= ; S--) {
for (int v = ; v <= n; v++) {
for (int u = ; u <= n; u++) {
if (!(S&(<<u))) {
if (dp[S][v] < ) {
dp[S][v] = dp[S|(<<u)][u] + d[v][u];
} else {
dp[S][v] = min(dp[S][v], dp[S|(<<u)][u] + d[v][u]);
}
}
}
}
}
printf("%d\n", dp[][]);
} return ;
}
最新文章
- 写自己的ASP.NET MVC框架(上)
- CentOS找回root密码
- 笔记-人老了-github
- 手写particles
- 1079. Total Sales of Supply Chain (25) -记录层的BFS改进
- .net core微服务之基于Docker+Consul+Registrator服务注册服务发现
- Linux进程管理的学习
- java中的i++与++i的区别以及除法、模的用法(基础)
- java 得到目录路径的方法
- AI-DRF权限、频率
- redis linux(centos) 安装
- 【黑客免杀攻防】读书笔记2 - 免杀与特征码、其他免杀技术、PE进阶介绍
- string+和stringbuffer的速度比较
- jQuery学习笔记:基础
- 【代码审计】iCMS_v7.0.7 keywords.admincp.php页面存在SQL注入漏洞分析
- python入门-测试代码
- java Date 当天时间戳处理
- [POI2018]Pow&#243;dź
- mycli---数据库工具(提示、自动补全)
- Android开发利用Volley框架下载和缓存网络图片
热门文章
- ES6 | 关于class类 继承总结
- 启动tomcat运行maven工程报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:
- git远程仓库变更
- [arc082e]ConvexScore
- vue-cli解析
- String spilt时转义特殊字符【转】
- JAVA SSL
- 50个经典Sql语句
- hadoop-01-ssh无密登录配置
- 【Android】把外部文件拷贝的AVD安卓模拟器上的sdcard上,而且在AVD中浏览sdcard的文件