• 题意:有\(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;
    }

最新文章

  1. 。net 文件依赖缓存
  2. Java程序的安装、配置、创建项目
  3. JS判断是否安装flash player及当前版本
  4. IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置
  5. OpenGL缓冲区
  6. 自动部署Nginx和nfs并架设Nginx集群脚本
  7. 废旧鼠标先别丢,用来学习nRF52832 的QDEC
  8. python try exception finally记录
  9. kubernetes学习笔记之十四:helm入门
  10. Java中的this关键字老生常谈
  11. git初始化项目 以及 git常用操作
  12. iOS cell左滑出现多个功能按钮(IOS8以后支持)
  13. Twain Capabilities 转
  14. USACO Section 2.1 Sorting a Three-Valued Sequence 解题报告
  15. Postman 工具模拟Ajax请求
  16. 图解vim常用命令
  17. PyTorch源码解读之torchvision.transforms(转)
  18. smarty核心思想 自制模板引擎
  19. flask 继承模版的基本使用
  20. java线程的3种创建方式及优缺点

热门文章

  1. Windows安全加固
  2. C++ STL 优先队列 (priority_queue)
  3. python--or 和 and 表达式
  4. Python安装教程之anaconda篇
  5. 微信登录4-开发回调URL
  6. JSAAS BPM快速开发平台-企业管理软件,专属你的企业管家
  7. MATLAB图像处理_Bayer图像处理 &amp; RGB Bayer Color分析
  8. Windows和Linux下apache-artemis-2.10.0安装配置
  9. LVS负载均衡理论以及算法概要
  10. git的使用学习笔记--项目版本操作