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 ...
随机推荐
- CSU 1809 - Parenthesis - [前缀和+维护区间最小值][线段树/RMQ]
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1809 Bobo has a balanced parenthesis sequenc ...
- linux:任务计划crontab
crontab 简介 crontab 命令常见于 Unix 和类 Unix 的操作系统之中(Linux 就属于类 Unix 操作系统),用于设置周期性被执行的指令. crontab 命令从输入设备读取 ...
- css实现简单几何图形
前言:你知道吗?用代码就可以做出三角形.圆形.扇形等等这些几何图形呦.快过来一探究竟吧! 页面上一些简单的图形,如三角形.圆形等等,除了用图片来实现,我们还可以用css的border属性来实现,不仅减 ...
- 01_Python 基础课程安排
Python 基础课程安排 目标 明确基础班课程内容 课程清单 序号 内容 目标 01 Linux 基础 让大家对 Ubuntu 的使用从很 陌生 达到 灵活操作 02 Python 基础 涵盖 Py ...
- mysql 数据库数据订正
mysql 数据库数据订正 http://blog.itpub.net/22664653/viewspace-717175/ 工作过程中时常遇到数据订正的需求,该操作本身不难.操作时要求能够保持回滚~ ...
- SQLCE数据工具(Flyhoward Ltd SDF Viewer)
SDF Viewer sdf数据库创建编辑查看 官方下载地址 http://www.flyhoward.com/Download_SDF_Viewer.aspx 用户名:www.cr173.com注 ...
- 多线程下载文件,ftp文件服务器
1: 多线程下载文件 package com.li.multiplyThread; import org.apache.commons.lang3.exception.ExceptionUtils; ...
- [git]git版本管理学习记录
今天看到别人用这玩意记录自己的进度, 我也学习了一下. 1,适当的工具会提升效率 2,关注点还是得放在代码本身上. github/gitignore github提供了各种gitignore文件 有p ...
- [py]一些搜集到的问题
过滤爬虫爬取下来的关键字 v1,来不及了,先上车 content = ['哈士奇', '二哈', '哈士奇图片','哈士奇图片', '哈士奇美丽价格', '哈士奇是个大傻逼', '猫咪图片', '猫咪 ...
- Linux中Kill掉进程的10种方法
常规篇: 首先,用ps查看进程,方法如下: 复制代码 代码如下: $ ps -ef……smx 1822 1 0 11:38 ? 00:00:49 gnome-terminalsmx 1823 1822 ...