ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015) G. It is all about wisdom (二分,单源最短路)
2024-10-10 09:15:01
题意:有\(n\)个点,\(m\)条边,只有当你的智力值大于这条边的\(w\)才能走,问在花费不超过\(k\)的情况下,从\(1\)走到\(n\)的所需的最小智力值.
题解:这题比赛为什么没想出来呢?赛后看题解发现可以二分答案然后跑最短路来check,网上的题解全都是SPFA啊,我还是喜欢写dijkstra qwq.
代码:
struct misaka{
int out;
int val;
int wis;
}e; int t;
int n,m,k;
vector<misaka> v[N];
int dis[N];
bool st[N]; bool dijkstra(int x){
me(dis,INF,sizeof(dis));
me(st,false,sizeof(st));
priority_queue<PII,vector<PII>,greater<PII>> h;
h.push({0,1}); while(!h.empty()){
auto tmp=h.top();
h.pop(); int node=tmp.se;
int dist=tmp.fi; if(st[node]) continue;
st[node]=true; for(auto w:v[node]){
int j=w.out;
if(x<w.wis || dist+w.val>k) continue;
if(dis[j]>dist+w.val){
dis[j]=dist+w.val;
h.push({dis[j],j});
}
}
}
if(dis[n]<k) return true;
return false;
} int main() {
//ios::sync_with_stdio(false);cin.tie(0);
scanf("%d",&t);
while(t--){
scanf("%d %d %d",&n,&m,&k);
for(int i=1;i<=m;++i){
int a,b,c,w;
scanf("%d %d %d %d",&a,&b,&c,&w);
v[a].pb({b,c,w});
v[b].pb({a,c,w});
}
int l=1,r=1e9;
bool flag=false;
while(l<r){
int mid=(l+r)>>1;
if(dijkstra(mid)){
flag=true;
r=mid;
}
else{
l=mid+1;
}
}
if(flag) printf("%d\n",l);
else puts("-1");
for(int i=1;i<=n;++i){
v[i].clear();
}
} return 0;
}
最新文章
- 。net 文件依赖缓存
- Java程序的安装、配置、创建项目
- JS判断是否安装flash player及当前版本
- IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置
- OpenGL缓冲区
- 自动部署Nginx和nfs并架设Nginx集群脚本
- 废旧鼠标先别丢,用来学习nRF52832 的QDEC
- python try exception finally记录
- kubernetes学习笔记之十四:helm入门
- Java中的this关键字老生常谈
- git初始化项目 以及 git常用操作
- iOS cell左滑出现多个功能按钮(IOS8以后支持)
- Twain Capabilities 转
- USACO Section 2.1 Sorting a Three-Valued Sequence 解题报告
- Postman 工具模拟Ajax请求
- 图解vim常用命令
- PyTorch源码解读之torchvision.transforms(转)
- smarty核心思想 自制模板引擎
- flask 继承模版的基本使用
- java线程的3种创建方式及优缺点
热门文章
- Windows安全加固
- C++ STL 优先队列 (priority_queue)
- python--or 和 and 表达式
- Python安装教程之anaconda篇
- 微信登录4-开发回调URL
- JSAAS BPM快速开发平台-企业管理软件,专属你的企业管家
- MATLAB图像处理_Bayer图像处理 &; RGB Bayer Color分析
- Windows和Linux下apache-artemis-2.10.0安装配置
- LVS负载均衡理论以及算法概要
- git的使用学习笔记--项目版本操作