BZOJ4158 : [POI2007]Railway
论文题。
随便取个关键点,求出最短路树。
求出所有关键点组成的虚树,将两端都在虚树上的边保留。
对剩下的边求出最小生成树即可得到一组可行解。
#include<cstdio>
#include<algorithm>
const int N=5010,M=500010,inf=~0U>>1;
int n,m,p,i,x,f[N],id[N],ans,cnt,use[M];
int q[131072],in[N],d[N],pre[N];unsigned short h,t;
struct Edge{int v,w;Edge*nxt;}*g[N],pool[M<<1],*cur=pool,*I;
inline void add(int x,int y,int z){I=cur++;I->v=y;I->w=z;I->nxt=g[x];g[x]=I;}
struct E{int x,y,z;}e[M];
inline bool cmp(E a,E b){return a.z<b.z;}
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
int F(int x){return f[x]==x?x:f[x]=F(f[x]);}
int main(){
for(read(n),read(m);i<m;i++){
read(e[i].x),read(e[i].y),read(e[i].z);
add(e[i].x,e[i].y,e[i].z);
add(e[i].y,e[i].x,e[i].z);
}
for(read(p),i=1;i<=p;i++)read(id[i]);
for(i=1;i<=n;i++)d[i]=inf;
d[q[0]=id[1]]=0,in[id[1]]=1;
while(h!=t+1)for(I=g[x=q[h++]],in[x]=0;I;I=I->nxt)if(d[x]+I->w<d[I->v]){
d[I->v]=d[x]+I->w,pre[I->v]=x;
if(!in[I->v]){
in[I->v]=1;
if(d[I->v]<d[q[h]])q[--h]=I->v;else q[++t]=I->v;
}
}
for(in[id[1]]=i=1;i<=p;i++)for(x=id[i];!in[x];x=pre[x])in[x]=1;
for(i=1;i<=n;i++)f[i]=i;
for(std::sort(e,e+m,cmp),i=0;i<m;i++)if(in[e[i].x]&&in[e[i].y]&&F(e[i].x)!=F(e[i].y)){
f[f[e[i].x]]=f[e[i].y];
ans+=e[i].z,cnt++,use[i]=1;
}
for(printf("%d %d\n",ans,cnt),i=0;i<m;i++)if(use[i])printf("%d %d\n",e[i].x,e[i].y);
return 0;
}
BZOJ4158 : [POI2007]Railway的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- BZOJ1098: [POI2007]办公楼biu
从问题可以看出是求补图的连通块及点数 但补图太大.所以考虑缩小规模. 当一个点归属于一个连通块后,它以后就不需要了.所以可以用链表,删去这个点,也就减小了规模. 一个点开始bfs,每个点只会进队一次, ...
- BZOJ1097: [POI2007]旅游景点atr
..k次最短路后,考虑如何满足先走一些点 用状压dp,每一个点考虑它所需要经过的点a[i],当当前走过的点包含a[i]时,i 这个点才可以到达. 写的时候用记忆化搜索. #include<bit ...
- BZOJ 1101: [POI2007]Zap
1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2262 Solved: 895[Submit][Status] ...
- BZOJ 1100: [POI2007]对称轴osi
1100: [POI2007]对称轴osi Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 630 Solved: 243[Submit][Statu ...
- BZOJ 1111: [POI2007]四进制的天平Wag
1111: [POI2007]四进制的天平Wag Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 223 Solved: 151[Submit][St ...
- BZOJ 1105: [POI2007]石头花园SKA
1105: [POI2007]石头花园SKA Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 628 Solved: 182[Submit][Stat ...
- BZOJ 1110: [POI2007]砝码Odw
1110: [POI2007]砝码Odw Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 547 Solved: 296[Submit][Status ...
随机推荐
- Unity3d LineRenderer画线
原地址:http://www.cnblogs.com/88999660/archive/2013/01/21/2869498.html 1. 画多条线 画多条线需要在场景中放置多个GameObjec ...
- window 安装 sass compass 记录
1.安装Ruby 安装sass 和compass 需要 Ruby 的环境,还区分xp 和win7-8 下版本区别 ruby 官网中文 ruby 官网英文 注意: xp: 下载 [xp不能下载包含64位 ...
- RemObjects SDK Source For Delphi XE7
原文:http://blog.csdn.net/tht2009/article/details/39545545 1.目前官网最新版本是RemObjects SDK for Delphi and al ...
- 关于 datasnap Stream的英文博客能容
转载:http://blogs.embarcadero.com/jimtierney/2009/04/06/31461/ DataSnap Server Method Stream Parameter ...
- macosx zsh下安装rvm和ruby
1)curl -L get.rvm.io | bash -s stable 2)把下面一行加到~/.zshrc中: [[ -s "$HOME/.rvm/scripts/rvm" ] ...
- 【SpringMVC】SpringMVC系列2之@RequestMapping 映射约束请求
@RequestMapping 映射约束请求 2.1.映射请求URL Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求,在控制器的类定义及方法定义 ...
- 要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。
1.在网站根目录下新建一scripts文件夹,向里边添加jquery-1.7.2.min.js和jquery-1.7.2.js(可根据自己需要使用不同的版本), 2.在根目录下添加全局应用程 ...
- Java最常用的变量定义汇总
Java最常用的数据类型有基本数据类型,字符串对象,数组,基本数据类型又分为:数值型(包括整形和浮点型),字符型,布尔型,下面用一个简单的程序把这些数据类型汇总一下 public class Java ...
- eclipse字体的设置
eclipse的默认字体太小,所以设置的大一些比较清楚,方法很简单,单击菜单栏的"Window"选择"Preferences",如下图: 然后左侧依次选择Gen ...
- PageBean分页组件
Page.java package org.guangsoft.bean; import java.util.List; public class Page { private int current ...