P4822 [BJWC2012]冻结
思路
和p4568类似的分层图最短路
从上一层向下一层连边权/2的边即可
代码
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
int u[5000100],v[5000100],w[5000100],fir[5000100],nxt[5000100],cnt,n,m,k,s,t,dis[5000100],vis[5000100];
struct QNode{
    int dis,x;
    bool operator < (const QNode &b) const{
        return dis>b.dis;
    }
};
priority_queue<QNode> q;
void addedge(int ui,int vi,int wi){
    ++cnt;
    u[cnt]=ui;
    v[cnt]=vi;
    w[cnt]=wi;
    nxt[cnt]=fir[ui];
    fir[ui]=cnt;
}
void dij(int s){
    memset(dis,0x3f,sizeof(dis));
    memset(vis,0,sizeof(vis));
    dis[s]=0;
    q.push((QNode){0,s});
    while(!q.empty()){
        QNode u=q.top();
        q.pop();
        if(vis[u.x])
            continue;
        vis[u.x]=true;
        for(int i=fir[u.x];i;i=nxt[i]){
            if(dis[v[i]]>dis[u.x]+w[i]){
                dis[v[i]]=dis[u.x]+w[i];
                q.push((QNode){dis[v[i]],v[i]});
            }
        }
    }
}
int main(){
    scanf("%d %d %d",&n,&m,&k);
    s=1,t=n;
    for(int i=1;i<=m;i++){
        int a,b,c;
        scanf("%d %d %d",&a,&b,&c);
        for(int j=1;j<=k+1;j++){
            addedge(a+(n*(j-1)),b+(n*(j-1)),c);
            addedge(b+(n*(j-1)),a+(n*(j-1)),c);
        }
        for(int j=1;j<=k;j++){
            addedge(a+(n*(j-1)),b+(n*(j)),c/2);
            addedge(b+(n*(j-1)),a+(n*(j)),c/2);
        }
    }
    for(int i=1;i<=k;i++)
        addedge(t+(n*(i-1)),t+(n*i),0);
    dij(s);
    printf("%d\n",dis[t+k*n]);
    return 0;
}
P4822 [BJWC2012]冻结的更多相关文章
- 洛谷 P4822 [BJWC2012]冻结 题解
		P4822 [BJWC2012]冻结 题目描述 "我要成为魔法少女!" "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于 ... 
- [洛谷P4822][BJWC2012]冻结
		题目大意:有一张$n(n\leqslant50)$个点$m(m\leqslant1000)$条边的无向图,可以使得$k$条边使得边权减半,求最短路 题解:分层图最短路 卡点:无 C++ Code: # ... 
- 洛谷 P4822 [BJWC2012]冻结
		之前没学分层图,所以先咕了一下hiahiahia. 学完分层图了回来水写题解了. 这道题要用分层图来解.分层图就是在我们决策的时候,再建k层图,一共k+1层,层与层之间是有向边(这个很重要的),权值为 ... 
- [BJWC2012]冻结
		[BJWC2012]冻结 luogu BZOJ 分层图最短路,层与层之间连半边权边 #include<bits/stdc++.h> using namespace std; const i ... 
- 分层图【p4822】[BJWC2012]冻结
		Description "我要成为魔法少女!" "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于卡片之中„„" ... 
- BZOJ2662:[BJWC2012]冻结(分层图最短路)
		Description “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„” 在这个愿望被实现以后的世界里,人们享 ... 
- [BJWC2012]冻结 分层图最短路
		昨晚飞行路线之后,这道题就应该能一眼切了 题目当然也不难,跑一遍分层图最短路即可 Code: #include<cstring> #include<algorithm> #in ... 
- 分层图初探 By cellur925
		因为最近测试遇到了分层图的题目,所以稍微学了一下==. 这种题目一般是来解决最短路边权有变化/有k条免费路的问题的.他们基本都一般有两种实现方式:dp+最短路/分层图+最短路 当然你如果非要说他们是一 ... 
- csp-s 考前刷题记录
		洛谷 P2615 神奇的幻方 洛谷 P2678 跳石头 洛谷 P1226 [模板]快速幂||取余运算 洛谷 P2661 信息传递 LOJ P10147 石子合并 LOJ P10148 能量项链 LOJ ... 
随机推荐
- map 的用法
			#include<iostream> #include<map> #include<string> #define s second #define f first ... 
- Java基础语法(二 )
			五.运算符 *算术运算符 *赋值运算符 *关系运算符 *逻辑运算符 *位运算符 *三目运算符 算术运算符 *+,-,*,/都是比较简单的操作 *+的几种作用: 加法 正数 字符串连接符 *除法的时候要 ... 
- 【Linux学习三】VI/VIM全屏文本编辑器
			环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.打开关闭文件打开文件:vim /path/to/somefilev ... 
- golang学习笔记18 用go语言编写移动端sdk和app开发gomobile
			golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ... 
- php获得可靠的精准的当前时间 ( 通过授时服务器 )
			有一种情形是这样子的,比如机票业务中的订票流程,我们需要一个非常可靠的当前时间来支持,尽管大多数服务器的时间是非常准确的,我们使用time()来获取的时间是可靠的,但未免会有不确切的情况,也有的服务器 ... 
- 直播协议的选择:RTMP vs. HLS
			文章转自:直播协议的选择:RTMP vs. HLS 前言 随着直播业务的兴起,越来越多的直播平台开始涌现,这火热的程度好像一个应用不带上直播业务出来都不好意思跟人打招呼.想要做一个直播业务,主要包括三 ... 
- org.springframework.dao.DuplicateKeyException
			org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [insert into account v ... 
- uwsgi 的巨坑
			网上各种找,最后自己猜,猜到了. 必须安装python插件, 网上找的都是不带数字的版本号, 要么找不到要么不行. 我是 3.6.1,尝试加36, 成了. yum install -y uwsgi-p ... 
- PHP 变量类型的强制转换 & 创建空对象
			PHP 在变量定义中不需要(或不支持)明示的类型定义:变量类型是根据使用该变量的上下文所决定的. 也就是说,如果把一个字符串值赋给变量 var,var 就成了一个字符串.如果又把一个整型值赋给 var ... 
- php 获取最近一周,一个月,一年
			<?php date_default_timezone_set('PRC'); /** * 获取最近一周,一个月,一年 * */ function getLatelyTime($type = ' ... 
