博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3355[Usaco2004 Jan]有序奶牛*
阅读量:6423 次
发布时间:2019-06-23

本文共 1531 字,大约阅读时间需要 5 分钟。

题意:

约翰的N头牛排成一行挤奶时,有确定的顺序。他拥有L条关于奶牛顺序的信息,所有的信息都写成“A在B的前面”这样的形式。请帮助约翰删除尽可能多的冗余信息,但要保证能推出原有的顺序。n≤1500。

题解:

首先拓扑排序,并给每个节点设定一个bitset存储哪些点能到达此点。接着按边终点拓扑序升序为第一关键字,起点拓扑序降序为第二关键字依次插边,如果当前终点的bitset里起点不为1则该边保留,并将终点的bitset和起点的bitset合并,否则该边不保留。

代码:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #define inc(i,j,k) for(int i=j;i<=k;i++) 7 #define maxn 1510 8 using namespace std; 9 10 inline int read(){11 char ch=getchar(); int f=1,x=0;12 while(ch<'0'||ch>'9'){
if(ch=='-')f=-1; ch=getchar();}13 while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();14 return f*x;15 }16 struct e{
int f,t,n;}es[maxn*100],es2[maxn*100]; int g[maxn],tot;17 void pe(int f,int t,int ess){es[ess]=(e){f,t,g[f]}; g[f]=ess;}18 int n,l,topo[maxn],du[maxn];19 bool cmp1(e a,e b){
return topo[a.t]==topo[b.t]?topo[a.f]>topo[b.f]:topo[a.t]
q; bitset
f[maxn];22 int main(){23 n=read(); l=read(); inc(i,1,l){ int x=read(),y=read(); pe(x,y,i); du[y]++;} inc(i,1,n)if(!du[i])q.push(i);24 while(!q.empty()){25 int x=q.front(); q.pop();26 for(int i=g[x];i;i=es[i].n){27 du[es[i].t]--; if(!du[es[i].t])q.push(es[i].t),topo[es[i].t]=topo[x]+1;28 }29 }30 sort(es+1,es+l+1,cmp1); inc(i,1,n)f[i][i]=1;31 inc(i,1,l){ if(!f[es[i].t][es[i].f])es2[++tot]=es[i]; f[es[i].t]|=f[es[i].f];}32 sort(es2+1,es2+tot+1,cmp2); printf("%d\n",tot);33 inc(i,1,tot)printf("%d %d\n",es2[i].f,es2[i].t); return 0;34 }

 

20161024

转载于:https://www.cnblogs.com/YuanZiming/p/6013254.html

你可能感兴趣的文章
『翻译』Node.js 调试
查看>>
我的iOS开发之路总结(更新啦~)
查看>>
Java NIO之拥抱Path和Files
查看>>
微信原图泄露的只能是 Exif ,你的隐私不在这!!!
查看>>
微信小程序教学第三章(含视频):小程序中级实战教程:列表篇-页面逻辑处理...
查看>>
页面间通信与数据共享解决方案简析
查看>>
Swift 中 Substrings 与 String
查看>>
作为一个开源软件的作者是一种什么样的感受?
查看>>
移动端适配知识你到底知多少
查看>>
TiDB 在 G7 的实践和未来
查看>>
重新认识javascript对象(三)——原型及原型链
查看>>
小学生学“数学”
查看>>
FastDFS蛋疼的集群和负载均衡(十七)之解决LVS+Keepalived遇到的问题
查看>>
深入剖析Redis系列(二) - Redis哨兵模式与高可用集群
查看>>
Android 用于校验集合参数的小封装
查看>>
iOS混合开发库(GICXMLLayout)七、JavaScript篇
查看>>
instrument 调试 无法指出问题代码 解决
查看>>
理解缓存
查看>>
im也去中心化?Startalk(星语)的去中心化设计之路
查看>>
BAT 经典算法笔试题 —— 磁盘多路归并排序
查看>>