3415: Poi2013 Price List
来源:互联网 发布:索尔仁尼琴 知乎 编辑:程序博客网 时间:2024/03/28 18:18
出题人脑洞好大…
题解参考
#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=n;i++)#define rep2(i,k,n) for(int i=k;i>=n;i--)#define E1(x,i) for(int i=e1.head[x];i;i=e1.edge[i].next)#define E2(x,i) for(int i=e2.head[x];i;i=e2.edge[i].next)using namespace std;const int N=2e5+7;struct Edge{struct E{ int to,pre,next;E(int to=0,int pre=0,int next=0):to(to),pre(pre),next(next){}}edge[N<<1];int head[N],tot;Edge(){tot=0;}void add(int x,int y){ edge[head[x]].pre=++tot;edge[tot]=E(y,0,head[x]);head[x]=tot; edge[head[y]].pre=++tot;edge[tot]=E(x,0,head[y]);head[y]=tot;}void del(int i,int x){ if(i==head[x])head[x]=edge[i].next; if(edge[i].pre)edge[edge[i].pre].next=edge[i].next; if(edge[i].next)edge[edge[i].next].pre=edge[i].pre;}}e1,e2;queue<int> Q;int vis[N],d[N],ans[N],n,m,S,a,b;int main(){ scanf("%d%d%d%d%d",&n,&m,&S,&a,&b); int x,y; rep(i,1,m){scanf("%d%d",&x,&y);e1.add(x,y),e2.add(x,y);} d[S]=0;vis[S]=1; Q.push(S); while(!Q.empty()){ int u=Q.front();Q.pop(); E1(u,i){int v=e1.edge[i].to; if(!vis[v]){Q.push(v);vis[v]=1;d[v]=d[u]+1;} } }rep(i,1,n)ans[i]=min(d[i]*a,(d[i]>>1)*b+(d[i]&1)*a); memset(vis,0,sizeof(vis)); memset(d,0,sizeof(d)); Q.push(S); while(!Q.empty()){ int u=Q.front();Q.pop(); E1(u,i){int v=e1.edge[i].to;vis[v]=1;} E1(u,i){int v=e1.edge[i].to; E2(v,j){ int k=e2.edge[j].to; if(d[k] || vis[k] || k==S)continue; Q.push(k);d[k]=d[u]+1; e2.del(j,v); } } E1(u,i){int v=e1.edge[i].to;vis[v]=0;} } rep(i,1,n)if(d[i])ans[i]=min(ans[i],d[i]*b); rep(i,1,n){printf("%d\n",ans[i]); }}
0 0
- 3415: Poi2013 Price List
- BZOJ3415: Poi2013 Price List
- POI2013
- InterCompany中的Price list
- hdu Price List
- HDU 5804:Price List
- hdu 5804 Price List
- Hdu5804 Price List
- HDU 5804 Price List
- HDU 5804 Price List
- HDU 5804 Price List
- hdoj-5804-Price List
- HDU5804--Price List
- hdoj-【5804 Price List】
- hdu 5804 Price List(水题 )
- Hdu 5804 Price List【水题】
- HDU5808 Price List Strike Back
- Price List 使用API导入Demo
- 【NOIP2016提高A组模拟10.15】最大化
- linux应用编程--简单常用函数
- 去掉字体加粗的实现
- hadoop3.0 分布式搭建/安装
- val设置获取属性值+each数组遍历
- 3415: Poi2013 Price List
- PHP使用array_intersect()函数求数组交集
- 带着实例继续学习(4):下拉框数据填充、组件生命周期、动态绑定事件
- C++11 (一)
- Android 进程启动源码解析
- Anniversary party--树形DP
- yii中ActiveForm表单工具的用法总结
- Kafka Producer相关代码分析
- 5.java学习之小乐趣(我来到这世界多少天了!)