【dij变形】牛客练习赛93 C

C-点权_牛客练习赛93 (nowcoder.com)

题意:

 

思路:

重要的是在松弛的时候要满足什么条件才开始松弛

这里是用两个点来松弛一个点 

 

Code:

#include <bits/stdc++.h>//#define int long longusing namespace std;const int mxn=1e5+10;
const int mxv=1e5+10;
const int mxe=1e5+10;
const int mod=1e9+7;
const int Inf=0x3f3f3f3f;struct ty{int to,next,w;
}edge[mxe<<2];struct ty2{int x,dis;bool operator<(const ty2&oth)const{return oth.dis<dis;}
};multiset<int> S[mxn];priority_queue<ty2> Q;int N,u,v,w;
int tot=0;
int head[mxn],in[mxn];
int vis[mxn],dis[mxn];void add(int u,int v,int w){edge[tot].w=w;edge[tot].to=v;edge[tot].next=head[u];head[u]=tot++;
}
void G_init(){tot=0;for(int i=0;i<=N;i++) head[i]=-1;
}
int get(int u){return (*S[u].begin())+(*(++S[u].begin()));
}
void dij(){memset(dis,0x3f,sizeof(dis));memset(vis,0,sizeof(vis));for(int i=1;i<=N;i++){if(in[i]<=1){Q.push({i,0});dis[i]=0;}S[i].insert(Inf);S[i].insert(Inf);}while(!Q.empty()){auto u=Q.top();Q.pop();if(vis[u.x]) continue;vis[u.x]=1;for(int i=head[u.x];~i;i=edge[i].next){S[edge[i].to].insert(dis[u.x]+edge[i].w);if(dis[edge[i].to]>get(edge[i].to)){dis[edge[i].to]=get(edge[i].to);if(!vis[edge[i].to]) Q.push({edge[i].to,dis[edge[i].to]});}}}
}
void solve(){cin>>N;G_init();for(int i=1;i<=N-1;i++){cin>>u>>v>>w;add(u,v,w);add(v,u,w);in[u]++;in[v]++;}dij();for(int i=1;i<=N;i++){if(dis[i]==Inf) cout<<-1<<" \n"[i==N];else cout<<dis[i]<<" \n"[i==N];}
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;while(__--)solve();return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/22139.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fastapi docs打开为空白解决办法

空白的原因 使用的cdn为国外cdn 解决办法 使用国内cdn 解决步骤 1.打开此文件D:\Program Files\Python\Lib\site-packages\fastapi\openapi\docs.py 2.修改cdn地址 国内cdn不好找呀 &#xff08;1&#xff09;.七牛云存储 开放静态文件CDN&#xff0c;地址&#xff1a;h…

C语言——动态内存管理(malloc, calloc, realloc, free, 柔性数组详解)

C语言——动态内存管理 1. 为什么需要动态内存管理 我们以往定义数组&#xff0c;都是这么定义的&#xff1a; int nums[10] {0};以这种方式开辟空间有两个特点&#xff1a; 空间开辟的大小是固定的数组在声明的时候&#xff0c;必须指定数组的长度&#xff0c;它所需要的内…

scrapy---爬虫界的django

1介绍 scrapy架构 引擎(EGINE)&#xff1a;引擎负责控制系统所有组件之间的数据流&#xff0c;并在某些动作发生时触发事件。大总管&#xff0c;负责整个爬虫数据的流动 调度器(SCHEDULER)用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个U…

引入头文件#include <iostream>的时候发生了什么?

<iostream> namespace std {extern istream cin;extern ostream cout;extern ostream cerr;extern ostream clog;extern wistream wcin;extern wostream wcout;extern wostream wcerr;extern wostream wclog;};cin是什么&#xff1f; cin extern istream cin; The objec…

JVM 中的垃圾回收策略

文章目录 JVM 中的垃圾回收策略死亡对象的判断算法引用计数可达性分析 垃圾回收算法标记-清除算法复制算法标记-整理算法分代算法 JVM 中的垃圾回收策略 C 语言中&#xff0c;malloc 的内存必须 手动 free&#xff0c;否则容易出现内存泄漏&#xff08;光申请内存&#xff0c;…

Docker查看相关存储信息以及扩容

Docker查看相关存储信息以及扩容 &#xff08;mac环境&#xff09; 查看docker基本信息&#xff1a; docker info可以看到docker的存储位置在这里 2. 查看mac的所有盘以及分区大小情况 diskutil listdocker查看网络信息&#xff1a; docker ps # 查看所有在运行的container信…

中信银行西安分行举办金融助力外贸企业“走出去“高端论坛

7月14日&#xff0c;中信银行西安分行联合中国出口信用保险公司陕西分公司、西安市工商联举办"智汇西安、信融全球"——金融助力外贸企业"走出去"高端论坛。该论坛紧跟“加快建设贸易强国”的战略指引&#xff0c;以创新金融服务助力外贸企业融入高水平对外…

第51步 深度学习图像识别:Convolutional Vision Transformer建模(Pytorch)

基于WIN10的64位系统演示 一、写在前面 &#xff08;1&#xff09;Convolutional Vision Transformers Convolutional Vision Transformer&#xff08;ConViT&#xff09;是一种结合了卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;简称CNN&#xff09…

08_SPI-Flash 扇区擦除实验

08_SPI-Flash 扇区擦除实验 1. 实验目标2. 操作时序2.1 扇区擦除操作指令2.2 完整扇区擦除操作时序 3. 程序框图3.1 顶层框图3.2 扇区擦除模块 4. 波形图5. RTL5.1 flash_se_ctrl5.2 spi_flash_se 6. Testbench6.1 tb_flash_se_ctrl6.2 tb_spi_flash_se 1. 实验目标 编写扇区擦…

Oracle表设计

设计原则 为了建立冗余较小、结构合理的数据库&#xff0c;设计数据库时必须遵循一定的规 则。在关系型数据库中这种规则就称为范式。 范式是符合某一种设计要求的总结。 要想设计一个结构合理的关系型数据库&#xff0c;必须满足一定的范式。在实际开发中最为 常见的设计范式…

学校食堂升级改造?看这篇就够了!

在现代化的食堂管理中&#xff0c;智慧食堂扮演着重要的角色。通过利用智能技术和先进的收银系统&#xff0c;食堂能够实现快速、准确和便捷的收银过程&#xff0c;为顾客提供更好的用餐体验。 智慧食堂是适应现代社会对快捷、便利、个性化餐饮服务需求的创新解决方案&#xff…

面试题更新之-HTML5的新特性

文章目录 导文新特性有哪些&#xff1f;HTML5的新特性带来了许多好处 导文 面试题更新之-HTML5的新特性 新特性有哪些&#xff1f; HTML5引入了许多新特性和改进&#xff0c;以下是一些HTML5的新特性&#xff1a; 语义化标签&#xff1a;HTML5引入了一系列的语义化标签&#…