bzoj 4289 PA2012 Tax——构图
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4289
可以把一个点上的边按权值排序,然后边权小的向第一个比它大的连差值的边,边权大的向第一个比它小的连0边;这样能体现出“边权较大的边的边权”。
别忘了每条边还要自己跟自己连自己权值的边,表示不是差值的初始值。
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<vector>
- #include<queue>
- #define ll long long
- using namespace std;
- const int N=1e5+,M=2e5+;
- int n,m,hd[M<<],xnt,to[M<<],nxt[M<<],w[M<<];
- ll dis[M<<],ans=0x3f3f3f3f3f3f3f3f;//M<<1!v
- bool vis[M<<];
- struct Node{
- int bh,w;Node(int a=,int b=):bh(a),w(b) {}
- };
- vector<Node>e[N];
- priority_queue<pair<ll,int> > q;
- bool cmp(Node u,Node v){return u.w<v.w;}
- int rdn()
- {
- int ret=;bool fx=;char ch=getchar();
- while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
- while(ch>=''&&ch<='') ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
- return fx?ret:-ret;
- }
- void add(int x,int y,int z)
- {
- to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;w[xnt]=z;
- }
- void dj()
- {
- while(q.size())
- {
- int k=q.top().second;q.pop();
- if(vis[k])continue; vis[k]=;
- for(int i=hd[k],v;i;i=nxt[i])
- if(dis[v=to[i]]>dis[k]+w[i])
- {
- dis[v]=dis[k]+w[i];
- q.push(make_pair(-dis[v],v));
- }
- }
- }
- int main()
- {
- n=rdn(); m=rdn();
- for(int i=,u,v,z;i<=m;i++)
- {
- u=rdn(); v=rdn(); z=rdn(); add(i,i+m,z); add(i+m,i,z);
- e[u].push_back(Node(i,z)); e[v].push_back(Node(i+m,z));
- }
- for(int i=;i<=n;i++)
- {
- sort(e[i].begin(),e[i].end(),cmp);
- int d=e[i].size();
- for(int j=;j<d-;j++)
- {
- add(e[i][j].bh,e[i][j+].bh,e[i][j+].w-e[i][j].w);
- add(e[i][j+].bh,e[i][j].bh,);
- }
- }
- memset(dis,0x3f,sizeof dis);
- int d=e[].size();
- for(int i=;i<d;i++)
- {
- dis[e[][i].bh]=e[][i].w;
- q.push(make_pair(-e[][i].w,e[][i].bh));
- }
- dj();
- d=e[n].size();
- for(int i=;i<d;i++)ans=min(ans,dis[e[n][i].bh]);
- printf("%lld\n",ans);
- return ;
- }
bzoj 4289 PA2012 Tax——构图的更多相关文章
- BZOJ.4289.PA2012 Tax(思路 Dijkstra)
题目链接 \(Description\) 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价 ...
- BZOJ 4289: PA2012 Tax 差分建图 最短路
https://www.lydsy.com/JudgeOnline/problem.php?id=4289 https://www.cnblogs.com/clrs97/p/5046933.html ...
- BZOJ 4289: PA2012 Tax(最短路)
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 755 Solved: 240[Submit][Status][Discuss] Descriptio ...
- bzoj 4289: PA2012 Tax
Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边 ...
- ●BZOJ 4289 PA2012 Tax
●赘述题目 算了,题目没有重复的必要. 注意理解:对答案造成贡献的是每个点,就是了. 举个栗子: 对于如下数据: 2 1 1 2 1 答案是 2: ●题解 方法:建图(难点)+最短路. 先来几个链接: ...
- 【刷题】BZOJ 4289 PA2012 Tax
Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边 ...
- BZOJ 4289: PA2012 Tax Dijkstra + 查分
Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边 ...
- [BZOJ4289] [PA2012] Tax 解题报告 (最短路+差分建图)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4289 4289: PA2012 Tax Time Limit: 10 Sec Memo ...
- 「BZOJ 4289」 PA2012 Tax
「BZOJ 4289」 PA2012 Tax 题目描述 给出一个 \(N\) 个点 \(M\) 条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点 \(1\) 到点 \( ...
随机推荐
- Aws Dynamodb数据导出到S3
本节将描写叙述怎样从一个或多个DynamoDB的表导出数据到S3的bucket中.在运行导出之前你须要提前创建好S3的bucket. 注意 假设你还没有使用过AWS Data Pipeline,在运行 ...
- log4net菜鸟指南二----生成access和txt
前言 有可能目标计算机缺少某些组件,导致无法生成access文件,或者打不开文件,这时txt文件就可以方便的使用了 一,标准的控制台程序输出日志到access <?xml version=&qu ...
- 广告制胜无它,顺应人性尔——leo鉴书63
近期看了几本怎样写文案的书.对广告有了些兴趣.查了下相关销量排行,位置比較高的是本叫<科学的广告+我的广告生涯>的书,是同一作者(Claude C. Hopkins)两本书的合集.前者是他 ...
- 微信自带浏览器被输入法阻挡文本框的 jQuery 解决方法 by FungLeo
微信自带浏览器被输入法阻挡文本框的 jQuery 解决方法 by FungLeo 前言 做好了项目之后,在各种浏览器里面測试,都没有问题.非常高兴,交付后端使用.然而发如今微信自带浏览器里面,却是出现 ...
- VueJS表达式支持:逻辑控制或运算
HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- 储存技术(SLC、MLC、TLC和QLC的NAND闪存技术)和Optane Memory
1.转载:Optane Memory 2.构成SSD的主要IC有主控芯片和NAND闪存,SLC.MLC和TLC三者都是闪存的类型 需要说明的闪存的寿命指的是写入(擦写)的次数,不是读出的次数,因为读取 ...
- javascript 高级编程系列 - 基本数据类型
javascript中的基本数据类型包括: Undefined, Null, Boolean, Number, String 5种数据类型 1. Undefined 类型 (只有一个值 undefin ...
- freescale-sdk linux移植一搭建编译环境脚本host-prepare.sh分析
接下来使用自己的课外歇息时间,对基于PowerPC架构freescale-sdk,进行linux移植和分析.主要參考官方文档freescale linux sdk START_HERE.html,首先 ...
- 关于error:Cannot assign to 'self' outside of a method in the init family
有时候我们重写父类的init方法时不注意将init后面的第一个字母写成了小写.在这种方法里面又调用父类的初始化方法(self = [super init];)时会报错,错误信息例如以下:error:C ...
- sublime 快捷键 汇总--长期
Ctrl+P 输入当前项目中的文件名,快速搜索文件 Ctrl+G 输入数字跳转到该行代码 Ctrl+R 输入关键字,查找文件中的函数名 Ctrl+: 输入关键字,查找文件中的变量名.属性名等 Ctrl ...