bzoj1638 / P2883 [USACO07MAR]牛交通Cow Traffic
P2883 [USACO07MAR]牛交通Cow Traffic
对于每一条边$(u,v)$
设入度为0的点到$u$有$f[u]$种走法
点$n$到$v$(通过反向边)有$f2[v]$种走法
显然经过这条边的方案数为$f[u]*f2[v]$
两边递推处理$f$数组,然后枚举每条边取个$max$。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
void swap(int &a,int &b){a^=b^=a^=b;}
int max(int &a,int &b){return a>b?a:b;}
#define N 5005
#define M 50002
int n,m,f[N],f2[N],in[N],in2[N],ans;
int cnt,hd[N],nxt[M],ed[N],poi[M];
int cnt2,hd2[N],nxt2[M],ed2[N],poi2[M];
queue <int> h;
void adde(int x,int y){
nxt[ed[x]]=++cnt; hd[x]=hd[x]?hd[x]:cnt;
ed[x]=cnt; poi[cnt]=y; ++in[y];
}
void adde2(int x,int y){
nxt2[ed2[x]]=++cnt2; hd2[x]=hd2[x]?hd2[x]:cnt2;
ed2[x]=cnt2; poi2[cnt2]=y; ++in2[y];
}
int main(){
scanf("%d%d",&n,&m);
for(int i=,q1,q2;i<=m;++i){
scanf("%d%d",&q1,&q2);
if(q1>q2) swap(q1,q2);
adde(q1,q2); adde2(q2,q1);
}
for(int i=;i<=n;++i) if(!in[i]) h.push(i),f[i]=;
while(!h.empty()){
int x=h.front(); h.pop();
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
f[to]+=f[x]; --in[to];
if(in[to]==) h.push(to);
}
}//以上正向图,以下反向图
h.push(n),f2[n]=;
while(!h.empty()){
int x=h.front(); h.pop();
for(int i=hd2[x];i;i=nxt2[i]){
int to=poi2[i];
f2[to]+=f2[x]; --in2[to];
if(in2[to]==) h.push(to);
}
}
for(int i=;i<=n;++i)
for(int j=hd[i];j;j=nxt[j])
ans=max(ans,f[i]*f2[poi[j]]);//枚举边数
printf("%d",ans);
return ;
}
bzoj1638 / P2883 [USACO07MAR]牛交通Cow Traffic的更多相关文章
- 拓扑排序/DP【洛谷P2883】 [USACO07MAR]牛交通Cow Traffic
P2883 [USACO07MAR]牛交通Cow Traffic 随着牛的数量增加,农场的道路的拥挤现象十分严重,特别是在每天晚上的挤奶时间.为了解决这个问题,FJ决定研究这个问题,以能找到导致拥堵现 ...
- BZOJ1638: [Usaco2007 Mar]Cow Traffic 奶牛交通
1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 571 Solved: 199 ...
- 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通
1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 618 Solved: 217 ...
- P2877 [USACO07JAN]牛校Cow School(01分数规划+决策单调性分治)
P2877 [USACO07JAN]牛校Cow School 01分数规划是啥(转) 决策单调性分治,可以解决(不限于)一些你知道要用斜率优化却不会写的问题 怎么证明?可以暴力打表 我们用$ask(l ...
- P3014 [USACO11FEB]牛线Cow Line && 康托展开
康托展开 康托展开为全排列到一个自然数的映射, 空间压缩效率很高. 简单来说, 康托展开就是一个全排列在所有此序列全排列字典序中的第 \(k\) 大, 这个 \(k\) 即是次全排列的康托展开. 康托 ...
- bzoj1612 / P2419 [USACO08JAN]牛大赛Cow Contest(Floyd)
P2419 [USACO08JAN]牛大赛Cow Contest Floyd不仅可以算最短路,还可以处理点之间的关系. 跑一遍Floyd,处理出每个点之间是否有直接或间接的关系. 如果某个点和其他$n ...
- 【洛谷】2990:[USACO10OPEN]牛跳房子Cow Hopscotch【单调队列优化DP】
P2990 [USACO10OPEN]牛跳房子Cow Hopscotch 题目描述 The cows have reverted to their childhood and are playing ...
- 洛谷——P2952 [USACO09OPEN]牛线Cow Line
P2952 [USACO09OPEN]牛线Cow Line 题目描述 Farmer John's N cows (conveniently numbered 1..N) are forming a l ...
- P2419 [USACO08JAN]牛大赛Cow Contest
P2419 [USACO08JAN]牛大赛Cow Contest 题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, conveniently number ...
随机推荐
- Linux下缓冲区溢出攻击的原理及对策
前言 从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用.当函数调用发生时,新的堆栈 帧被压入堆栈:当函数返回时,相应的堆栈帧从堆栈中弹出.尽管堆栈帧结构的引入为在高级语言中实 ...
- train_test_split, 关于随机抽样和分层抽样
https://zhuanlan.zhihu.com/p/49991313 在将样本数据分成训练集和测试集的时候,应当谨慎地考虑一下是采用纯随机抽样,还是分层抽样. 通常,数据集如果足够大,纯随机抽样 ...
- SQL语句中的正则表达式
正则表达式 REGEXP_LIKE执行正则表达式匹配 SELECT FIRST_NAME FROM EMPLOYEES WHERE REGEXP_LIKE(FIRST_NAME,'^al(an|yss ...
- count(*) count(1) count(column)区别
count(*) 和count(1)的效果是一样的.在某些情况下效率不一样.也会统计包含null的记录. count(column)会返回当前字段不为null的记录数.
- operator, itertools
import operator import itertools info_list = [ {'name': 'Quinn', 'age': 50}, {'name': 'Ryan', 'age': ...
- Eclipse安装aptana
1.下载aptana包 http://update.aptana.com/update/studio/3.2/ aptana_update_024747.zip(包) 2.安装插件包 解压该文件,解压 ...
- 共享访问在.NET中的编程实现
转载:http://blog.csdn.net/zhzuo/article/details/1732937 共享访问在.NET中的编程实现 发布日期:2007-08-08 | 更新日期:2009-03 ...
- linux平台mysql密码设置
登录mysql默认没有指定账号 查看默认账号是谁 select user(); mysql> select user();+----------------+| user() |+------- ...
- mysql 数据表操作 存储引擎介绍
一 什么是存储引擎? 存储引擎就是表的类型. mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制 ...
- 前端 HTML文档结构介绍
<!DOCTYPE HTML> <html> <head>...</head> <body>...</body> </ht ...