1638: [Usaco2007 Mar]Cow Traffic 奶牛交通
Time Limit: 5 Sec Memory Limit: 64 MB
Submit: 618 Solved: 217
[Submit][Status]
Description
农场中,由于奶牛数量的迅速增长,通往奶牛宿舍的道路也出现了严重的交通拥堵问题.FJ打算找出最忙碌的道路来重点整治. 这个牧区包括一个由M (1 ≤ M ≤ 50,000)条单行道路(有向)组成的网络,以及 N (1 ≤ N ≤ 5,000)个交叉路口(编号为1..N),每一条道路连接两个不同的交叉路口.奶牛宿舍位于第N个路口.每一条道路都由编号较小的路口通向编号较大的路口.这样就可以避免网络中出现环.显而易见,所有道路都通向奶牛宿舍.而两个交叉路口可能由不止一条边连接. 在准备睡觉的时候,所有奶牛都从他们各自所在的交叉路口走向奶牛宿舍,奶牛只会在入度为0的路口,且所有入度为0的路口都会有奶牛. 帮助FJ找出最忙碌的道路,即计算所有路径中通过某条道路的最大次数.答案保证可以用32位整数存储.
Input
第一行:两个用空格隔开的整数:N,M.
第二行到第M+1行:每行两个用空格隔开的整数ai,bi,表示一条道路从ai到bi.
Output
第一行: 一个整数,表示所有路径中通过某条道路的最大次数.
Sample Input
1 3
3 4
3 5
4 6
2 3
5 6
6 7
Sample Output
样例说明:
1 4
\ / \
3 6 -- 7
/ \ /
2 5
通向奶牛宿舍的所有路径:
1 3 4 6 7
1 3 5 6 7
2 3 4 6 7
2 3 5 6 7
HINT
Source
题解:我想揍死这个出题人——题目中明明说好的32位整数就可以的,但是当我天真的交了个没开int64的程序时,WA!!!然后我换成了int64,别的啥都没改,AC!!!这这这。。。好了步入正题——其实只需要顺着来一遍求出从出发点到各个点的路径数,再反着求一遍从各个点到奶牛宿舍的路径数(不难写的递推,此题嘛,呵呵呵,连拓扑排序都免了。。。)然后每个边的通过次数=出发点到此边的源点的路径数×此边的汇点到奶牛宿舍的路径数,这样子,才O(2N+M),轻松水过。。。
type
point=^node;
node=record
g:longint;
next:point;
end;
var
i,j,k,m,n:longint;
l:int64;
a,b:array[..] of point;
c,d:array[..] of int64;
p:point;
procedure add(x,y:longint);
var p:point;
begin
new(p);
p^.g:=y;
p^.next:=a[x];
a[x]:=p; new(p);
p^.g:=x;
p^.next:=b[y];
b[y]:=p;
end;
begin
readln(n,m);
for i:= to m do
begin
readln(j,k);
add(j,k);
end;
for i:= to n do
begin
p:=b[i];
if p=nil then
c[i]:=
else
begin
c[i]:=;
while p<>nil do
begin
c[i]:=c[i]+c[p^.g];
p:=p^.next;
end;
end;
end;
d[n]:=;
for i:=n- downto do
begin
p:=a[i];
if p=nil then
d[i]:=
else
begin
d[i]:=;
while p<>nil do
begin
d[i]:=d[i]+d[p^.g];
p:=p^.next;
end;
end;
end;
l:=;
for i:= to n do
begin
p:=a[i];
while p<>nil do
begin
k:=c[i]*d[p^.g];
//writeln(i,' ',p^.g,' - ',c[i],' ',d[p^.g]);
if k>l then l:=k;
p:=p^.next;
end;
end;
writeln(l);
end.
1638: [Usaco2007 Mar]Cow Traffic 奶牛交通的更多相关文章
-
【BZOJ】1638: [Usaco2007 Mar]Cow Traffic 奶牛交通(dfs+dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1638 一条边(u, v)经过的数量=度0到u的数量×v到n的数量 两次记忆化dfs算出他们即可 #i ...
-
BZOJ 1638 [Usaco2007 Mar]Cow Traffic 奶牛交通:记忆化搜索【图中边的经过次数】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1638 题意: 给你一个有向图,n个点,m条有向边. 对于所有从入度为0的点到n的路径,找出 ...
-
bzoj 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通【记忆化搜索】
震惊!记忆化搜索忘记返回map值调了半小时! 边(u,v)的经过次数是:能到u的牛数*v到n的方案数.正反两次连边,dfs两次即可 #include<iostream> #include& ...
-
BZOJ1638: [Usaco2007 Mar]Cow Traffic 奶牛交通
1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 571 Solved: 199 ...
-
【动态规划】bzoj1638 [Usaco2007 Mar]Cow Traffic 奶牛交通
设f[u]为从度数0到u的路径条数,f2[u]为从u到n的路径条数. ans=max{f[x[i]]*f2[y[i]]}(1<=i<=m). #include<cstdio> ...
-
BZOJ 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏( floyd )
直接floyd.. ---------------------------------------------------------------------------- #include<c ...
-
1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏
1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 424 Solved: 272 ...
-
BZOJ 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏
Description Farmer John 想让她的奶牛准备郡级跳跃比赛,贝茜和她的伙伴们正在练习跨栏.她们很累,所以她们想消耗最少的能量来跨栏. 显然,对于一头奶牛跳过几个矮栏是很容易的,但是高 ...
-
bzoj1641 [Usaco2007 Nov]Cow Hurdles 奶牛跨栏
Description Farmer John 想让她的奶牛准备郡级跳跃比赛,贝茜和她的伙伴们正在练习跨栏.她们很累,所以她们想消耗最少的能量来跨栏. 显然,对于一头奶牛跳过几个矮栏是很容易的,但是高 ...
随机推荐
-
Linux 建立文件夹的链接
linux下的软链接类似于windows下的快捷方式 建立软链接 ln -s a b a 就是源文件,b是链接文件名,其作用是当进入b目录,实际上是链接进入了a目录 example:ln -s /ho ...
-
淘宝JAVA中间件Diamond详解(一)---简介&;快速使用
大家好,今天开始为大家带来我们通用产品团队的产品 —— diamond的专题,本次为大家介绍diamond的概况和快速使用. 一.概况 diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是 ...
-
你的计算机也可以看懂世界——十分钟跑起卷积神经网络(Windows+CPU)
众所周知,如果你想研究Deep Learning,那么比较常用的配置是Linux+GPU,不过现在很多非计算机专业的同学有时也会想采用Deep Learning方法来完成一些工作,那么Linux+GP ...
-
谈谈关于PHP的代码安全相关的一些致命知识
谈谈关于PHP的代码安全相关的一些致命知识 目标 本教程讲解如何防御最常见的安全威胁:SQL 注入.操纵 GET 和 POST 变量.缓冲区溢出攻击.跨站点脚本攻击.浏览器内的数据操纵和远程表单提交. ...
-
Hdoj 2044.一只小蜜蜂... 题解
Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数. 其中,蜂房的结构如下所示. Input 输入数据的第一 ...
-
servlet injection analysis
一. Spring不能通过注解向Servlet中注入实例的原理 想了解此问题的原理,就要了解tomcat启动后 servlet和spring的加载顺讯. 1. tomcat启动后先加载web.xml ...
-
python在图片上写汉字
1.python opencv的putText只能画英文上去 2.借鉴这个https://blog.csdn.net/dcrmg/article/details/79108491 使用pil 首先,你 ...
-
java了解哪些锁
问题: 1.Java里的锁了解哪些? 说了Lock和synchronized 它们的使用方式和实现原理有什么区别呢?使用的话,synchronize用于方法和代码块,可以锁对象和类以及方法,Lock ...
-
golang实现一个代理服务器(proxy)学习笔记
golang是google公司开发一门新的编程语言.对于老的程序员来说,学习一门语言最好的方式,不过是做一个小的项目. 网上看到这一篇使用golang开发proxy的例子,觉得挺有意思.希望通过实际模 ...
-
113. 路径总和 II
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 ...