题目链接:http://poj.org/problem?id=3272

题目意思:n个点m条边的有向图,从所有入度为0的点出发到达n,问所有可能路径中,经过的某条路的最大次数是多少。边全是由标号小的到标号大的。

这道题求的是路径的最大通过数量,感觉比较典型,挺有意思的。

思路:建两个图一个正图,一个反图。将正图dfs一遍得到每个点到达n点的路径数,将反图dfs一遍得到每个点到达每个出度为0的点(奶牛的放牧地)的路径数,对于每条边正图上的终点路径数*反图上起点的路径数的最大值就是答案。

代码:

  1. //Author: xiaowuga
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <set>
  5. #include <vector>
  6. #include <queue>
  7. #include <cmath>
  8. #include <cstring>
  9. #include <cstdio>
  10. #include <ctime>
  11. #include <map>
  12. #include <bitset>
  13. #include <cctype>
  14. #define maxx INT_MAX
  15. #define minn INT_MIN
  16. #define inf 0x3f3f3f3f
  17. #define mem(s,ch) memset(s,ch,sizeof(s))
  18. #define nc cout<<"nc"<<endl
  19. #define sp " "
  20. const long long N=*+;
  21. using namespace std;
  22. typedef long long LL;
  23. typedef int II;
  24. struct eage{
  25. LL x,y;
  26. }E[N];
  27. vector<LL>p[+];
  28. vector<LL>q[+];
  29. LL n,m;
  30. LL ansp[+];
  31. LL ansq[+];
  32. LL in[+];
  33. LL vis[+];
  34. void init(){
  35. for(II i=;i<=n;i++){
  36. p[i].clear();q[i].clear();
  37. in[i]=vis[i]=ansq[i]=ansp[i]=;
  38. }
  39. }
  40. LL dfsp(LL x){//正图
  41. if(vis[x]) return ansp[x];
  42. vis[x]=;
  43. if(x==n) return ansp[x]=;
  44. for(LL i=;i<p[x].size();i++){
  45. LL t=p[x][i];
  46. ansp[x]+=dfsp(t);
  47. }
  48. return ansp[x];
  49. }
  50. LL dfsq(LL x){//反图
  51. if(vis[x]) return ansq[x];
  52. vis[x]=;
  53. if(!in[x]) return ansq[x]=;
  54. for(LL i=;i<q[x].size();i++){
  55. LL t=q[x][i];
  56. ansq[x]+=dfsq(t);
  57. }
  58. return ansq[x];
  59. }
  60. void solve(){
  61. for(LL i=;i<=n;i++){
  62. if(!in[i]) dfsp(i);
  63. }
  64. mem(vis,);
  65. dfsq(n);
  66. LL ans=minn;
  67. for(LL i=;i<m;i++){
  68. LL x=E[i].x;
  69. LL y=E[i].y;
  70. ans=max(ans,ansp[y]*ansq[x]);
  71. }
  72. cout<<ans<<endl;
  73. }
  74. int main() {
  75. ios::sync_with_stdio(false);cin.tie();
  76. while(cin>>n>>m){
  77. init();
  78. for(II i=;i<m;i++){
  79. cin>>E[i].x>>E[i].y;
  80. p[E[i].x].push_back(E[i].y);//正图
  81. q[E[i].y].push_back(E[i].x);//反图
  82. in[E[i].y]++;
  83. }
  84. solve();
  85. }
  86. return ;
  87. }

POJ3272 Cow Traffic的更多相关文章

  1. BZOJ1638: [Usaco2007 Mar]Cow Traffic 奶牛交通

    1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 571  Solved: 199 ...

  2. 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通

    1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 618  Solved: 217 ...

  3. bzoj1638 / P2883 [USACO07MAR]牛交通Cow Traffic

    P2883 [USACO07MAR]牛交通Cow Traffic 对于每一条边$(u,v)$ 设入度为0的点到$u$有$f[u]$种走法 点$n$到$v$(通过反向边)有$f2[v]$种走法 显然经过 ...

  4. 拓扑排序/DP【洛谷P2883】 [USACO07MAR]牛交通Cow Traffic

    P2883 [USACO07MAR]牛交通Cow Traffic 随着牛的数量增加,农场的道路的拥挤现象十分严重,特别是在每天晚上的挤奶时间.为了解决这个问题,FJ决定研究这个问题,以能找到导致拥堵现 ...

  5. 【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 ...

  6. 【动态规划】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> ...

  7. BZOJ 1638 [Usaco2007 Mar]Cow Traffic 奶牛交通:记忆化搜索【图中边的经过次数】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1638 题意: 给你一个有向图,n个点,m条有向边. 对于所有从入度为0的点到n的路径,找出 ...

  8. bzoj 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通【记忆化搜索】

    震惊!记忆化搜索忘记返回map值调了半小时! 边(u,v)的经过次数是:能到u的牛数*v到n的方案数.正反两次连边,dfs两次即可 #include<iostream> #include& ...

  9. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

随机推荐

  1. InnoDB存储引擎表的逻辑存储结构

    1.索引组织表:     在InnoDB存储引擎中,表都是依照主键顺序组织存放的.这样的存储方式的表称为索引组织表,在innodb存储引擎表中,每张表都有主键.假设创建的时候没有显式定义主键,则Inn ...

  2. CCFollow和ActionCallFunc

    CCFollow动作,可以让一个节点跟随另一个节点做位移. CCFollow经常用来设置layer跟随sprite,可以实现类似摄像机跟拍的效果 效果是精灵在地图上移动,地图也会跟着移动,但是精灵仍然 ...

  3. CentOS6.2下安装配置MySql

    转自:Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置 如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.ecli ...

  4. 开源搜索引擎评估:lucene sphinx elasticsearch (zhuan)

    http://lutaf.com/158.htm ************************ 开源搜索引擎程序有3大类 lucene系,java开发,包括solr和elasticsearch s ...

  5. Linksys WRT54G2 V1刷ddwrt注意事项

    关于DD-WRT和TOMATO下的应用就不多说了,反正其他能刷DD-WRT.TOMATO的路由器会有的功能,这台机器也都有,不过此机器刷TOMATO一定要刷ND版本的,因为5354的CPU是属于比较新 ...

  6. org.apache.hadoop.hbase.DoNotRetryIOException: Class org.apache.phoenix.coprocessor.MetaDataEndpointImpl cannot be loaded Set hbase.table.sanity.checks to false at conf or table descriptor if you want

    https://stackoverflow.com/questions/38495331/apache-phoenix-unable-to-connect-to-hbase 这个坑不该啊 首选配置hb ...

  7. jQuery 中 attr() 和 prop() 方法的区别<转>

    前几天,有人给 Multiple Select 插件 提了问题: setSelects doesn't work in Firefox when using jquery 1.9.0 一直都在用 jQ ...

  8. SenCha Touch HTML 5 应用程序缓存

    http://www.cnblogs.com/qidian10/p/3292876.html https://developer.mozilla.org/zh-CN/docs/HTML/Using_t ...

  9. Office Web App2013 在线查看PDF文件

    经常会有客户问,在SharePoint中,如何在浏览器中查看与编辑文档,通常给出的解决方案是集成Office Web App. 而在实际应用过程中,客户通常会要求实现PDF文件在线查看,对于PDF文件 ...

  10. Fastcgi_Finish_Request 提高页面响应速度

    当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法.按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行 ...