洛谷 P4822 [BJWC2012]冻结
之前没学分层图,所以先咕了一下hiahiahia。
学完分层图了回来水写题解了。
这道题要用分层图来解。分层图就是在我们决策的时候,再建k层图,一共k+1层,层与层之间是有向边(这个很重要的),权值为我们进行决策后的代价,而每一层互相连的什么都不变。对于这道题,就像这样建图:
for(int i = 1; i <= m; i++){
int x , y , z;
cin >> x >> y >> z;
e[x].push_back(make_pair(y , z));
e[y].push_back(make_pair(x , z));
for(int j = 1; j <= k; j++){
e[x + j * n].push_back(make_pair(y + n * (j - 1) , z / 2));
e[x + j * n].push_back(make_pair(y + n * j , z));
e[y + j * n].push_back(make_pair(x + n * (j - 1) , z / 2));
e[y + j * n].push_back(make_pair(x + n * j , z));
}
}
个人习惯,这里用的vector啊qwq。
如果要认真学习下分层图的话建议使用这篇博客哦我太懒了才不会写呢。
下面给出AC代码
#include <bits/stdc++.h>
using namespace std;
int n , m , k , ans = 0x3ffffff;
int dis[10010] , vis[10010];
vector<pair<int , int> > e[10010];
void work1(){
priority_queue<pair<int , int> > q;
memset(dis , 127 , sizeof(dis));
dis[1 + k * n] = 0;
q.push(make_pair(0 , 1 + k * n));
while(!q.empty()){
int x = q.top().second;
q.pop();
if(vis[x]) continue;
vis[x] = 1;
for(int i = 0; i < e[x].size(); i++){
int nx = e[x][i].first , w = e[x][i].second;
if(dis[nx] > dis[x] + w){
dis[nx] = dis[x] + w;
q.push(make_pair(-dis[nx] , nx));
}
}
}
}
int main(){
cin >> n >> m >> k;
for(int i = 1; i <= m; i++){
int x , y , z;
cin >> x >> y >> z;
e[x].push_back(make_pair(y , z));
e[y].push_back(make_pair(x , z));
for(int j = 1; j <= k; j++){
e[x + j * n].push_back(make_pair(y + n * (j - 1) , z / 2));
e[x + j * n].push_back(make_pair(y + n * j , z));
e[y + j * n].push_back(make_pair(x + n * (j - 1) , z / 2));
e[y + j * n].push_back(make_pair(x + n * j , z));
}
}
work1();
for(int i = 0; i <= k; i++) ans = min(dis[n + i * n] , ans);
cout << ans;
return 0;
}
/*
6 9 1
1 2 2
1 4 6
1 3 8
1 5 10
2 4 4
3 5 2
4 5 4
5 6 2
3 6 4
*/
洛谷 P4822 [BJWC2012]冻结的更多相关文章
- 洛谷 P4822 [BJWC2012]冻结 题解
P4822 [BJWC2012]冻结 题目描述 "我要成为魔法少女!" "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于 ...
- [洛谷P4822][BJWC2012]冻结
题目大意:有一张$n(n\leqslant50)$个点$m(m\leqslant1000)$条边的无向图,可以使得$k$条边使得边权减半,求最短路 题解:分层图最短路 卡点:无 C++ Code: # ...
- 洛谷P4822 冻结
题目描述 "我要成为魔法少女!" "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于卡片之中„„" 在这个愿望被 ...
- P4822 [BJWC2012]冻结
思路 和p4568类似的分层图最短路 从上一层向下一层连边权/2的边即可 代码 #include <cstdio> #include <algorithm> #include ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
随机推荐
- Java实现桐桐的数学难题
桐桐的数学难题 题目描述 今天数学课上,桐桐学习了质数的知识:一个正整数如果只能被1和它本身整除,那么这个整数便是质数.桐桐就想:任意一个正整数是否都能分解成若干个质数相乘的形式呢?输入一个正整数n( ...
- Java实现 LeetCode 388 文件的最长绝对路径
388. 文件的最长绝对路径 假设我们以下述方式将我们的文件系统抽象成一个字符串: 字符串 "dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext" 表示 ...
- Java实现 蓝桥杯 算法提高 计算行列式
试题 算法提高 计算行列式 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 //据说很多人的题目会有一大堆废话,本傻×就不在这里废话了. 给定一个N×N的矩阵A,求|A|. 输入格式 ...
- java实现平面点最小距离
已知平面上若干个点的坐标. 需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数). 比如有4个点:a,b,c,d, 则平均距离是指:ab, ac, ad, bc, bd, cd ...
- Java实现第八届蓝桥杯日期问题
日期问题 题目描述 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/ ...
- Python爬虫 requests库基础
requests库简介 requests是使用Apache2 licensed 许可证的HTTP库. 用python编写. 比urllib2模块更简洁. Request支持HTTP连接保持和连接池,支 ...
- java解决poi导出excel文字水印,导出excel不可操作问题
首先需求是用户提出导出excel数据需使用水印备注其用途: 其实就是在导出excel的同时带有自定义文字水印的导出. 那么我们首先想到的肯定是以一个什么样的思路去解决该问题,首先查找poi导出exce ...
- opencl(4)命令队列
1:创建命令队列 cl_command _queue clCreateCommandQueue( cl_context context, //上下文 cl_device_id device, ...
- 09_EM算法
今天是2020年3月5日星期四.预计开学时间不会早于四月初,真是好消息,可以有大把的时间整理知识点(实际上发文章的时间都6月6号了,希望9月份能开学啊,不耽误找工作~).每次导师找,整个人会变的特别烦 ...
- 剑指Offer之和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...