[BJWC2012]冻结
2024-09-01 20:46:09
[BJWC2012]冻结
#include<bits/stdc++.h>
using namespace std;
const int _=5000;
int re(){
int x=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*w;
}
int n,m,k,cnt,ans=1e9;
int h[_],d[_];
bool vis[_];
struct node{int id,d;};
struct edge{int to,next,w;}e[400000];
bool operator <(node a,node b){return a.d>b.d;}
priority_queue<node>q;
void link(int u,int v,int w){
e[++cnt]=(edge){v,h[u],w};h[u]=cnt;
}
void dij(){
memset(d,63,sizeof(d));
d[1]=0;q.push((node){1,0});
while(!q.empty()){
int u=q.top().id;q.pop();vis[u]=1;
for(int i=h[u];i;i=e[i].next){
int v=e[i].to;
if(d[v]>d[u]+e[i].w){
d[v]=d[u]+e[i].w;
if(!vis[v])q.push((node){v,d[v]});
}
}
}
}
int main(){
n=re(),m=re(),k=re();
while(m--){
int a=re(),b=re(),c=re();
link(a,b,c);link(b,a,c);
for(int i=1;i<=k;i++){
link(i*n+a,i*n+b,c);
link(i*n+b,i*n+a,c);
link((i-1)*n+a,i*n+b,c>>1);
link((i-1)*n+b,i*n+a,c>>1);
}
}
dij();
for(int i=1;i<=k+1;i++)
ans=min(ans,d[i*n]);
printf("%d\n",ans);
return 0;
}
最新文章
- UWP开发入门(二十二)——Storyboard和Animation
- Postgresql Jsonb字段内含数组属性的删除元素操作
- sublime text3 快捷方式汇总
- winform(容器、打印、对话框)
- NOIP2008普及组题解
- Android 用adb pull或push 拷贝手机文件到到电脑上,拷贝手机数据库到电脑上,拷贝电脑数据库到手机上
- XJOI网上同步测试DAY14 T3
- UAC下的程序权限提升
- vue-cli webpack在node环境下安装使用
- MyBatis开发中解决返回字段不全的问题
- appium常用方法
- 火星A+B(hdu1230)进制转化
- 播放一个wav文件
- 无插件,无com组件,利用EXCEL、WORD模板做数据导出(一)
- SQL语句小tips(持续更新)
- 记Git报错-Everything up-to-date
- Divide Two Integers leetcode java
- 麦子学院bootstrap实战项目官网,后台,jquery.singlePageNav.min.js ,wow.min.js,animate.css使用
- 23-吝啬的国度(vector+深搜)
- 20155236 2016-2017-2 《Java程序设计》第十周学习总结