缩点后转化成 DAG图上的单源最长路问题。spfa/dp随便。

  1. #include<cstdio>
  2. #include<queue>
  3. #include<algorithm>
  4. #include<vector>
  5. #include<cstring>
  6. using namespace std;
  7. int cmp[],sum,n,m,Us[],Vs[],t,w[],sta,k,ans,dis[];
  8. bool vis[],inq[];
  9. struct Edge{int v,w;Edge(const int &a,const int &b){v=a;w=b;}Edge(){}};
  10. vector<int>G[],rG[],G2[],vs;
  11. typedef vector<int>::iterator ITER;
  12. queue<int>q;
  13. void dfs(int U)
  14. {
  15. vis[U]=;
  16. for(ITER it=G[U].begin();it!=G[U].end();++it) if(!vis[*it]) dfs(*it);
  17. vs.push_back(U);
  18. }
  19. void dfs2(int U)
  20. {
  21. cmp[U]=sum;
  22. for(ITER it=rG[U].begin();it!=rG[U].end();++it) if(!cmp[*it]) dfs2(*it);
  23. }
  24. void scc()
  25. {
  26. for(int i=;i<=n;i++) if(!vis[i]) dfs(i);
  27. ITER it=vs.end(); --it;
  28. for(;;it--)
  29. {
  30. if(!cmp[*it]) {++sum; dfs2(*it);}
  31. if(it==vs.begin()) break;
  32. }
  33. }
  34. void spfa(const int &s)
  35. {
  36. dis[s]=w[s]; q.push(s); inq[s]=;
  37. while(!q.empty())
  38. {
  39. int U=q.front();
  40. for(ITER it=G2[U].begin();it!=G2[U].end();it++)
  41. if(dis[*it]<dis[U]+w[*it])
  42. {
  43. dis[*it]=dis[U]+w[*it];
  44. if(!inq[*it])
  45. {
  46. q.push(*it);
  47. inq[*it]=;
  48. }
  49. }
  50. q.pop(); inq[U]=;
  51. }
  52. }
  53. int main()
  54. {
  55. scanf("%d%d",&n,&m);
  56. for(int i=;i<=m;++i)
  57. {
  58. scanf("%d%d",&Us[i],&Vs[i]);
  59. G[Us[i]].push_back(Vs[i]);
  60. rG[Vs[i]].push_back(Us[i]);
  61. } scc();
  62. for(int i=;i<=n;++i) {scanf("%d",&t); w[cmp[i]]+=t;}
  63. for(int i=;i<=m;++i)
  64. if(cmp[Us[i]]!=cmp[Vs[i]])
  65. G2[cmp[Us[i]]].push_back(cmp[Vs[i]]);
  66. scanf("%d%d",&sta,&k);
  67. spfa(cmp[sta]);
  68. for(int i=;i<=k;++i)
  69. {
  70. scanf("%d",&t);
  71. ans=max(dis[cmp[t]],ans);
  72. } printf("%d\n",ans);
  73. return ;
  74. }

【强联通分量缩点】【最短路】【spfa】bzoj1179 [Apio2009]Atm的更多相关文章

  1. 【强联通分量缩点】【最长路】【spfa】CH Round #59 - OrzCC杯NOIP模拟赛day1 队爷的讲学计划

    10分算法:对于城市网络为一条单向链的数据, 20分算法:对于n<=20的数据,暴力搜出所有的可能路径. 结合以上可以得到30分. 60分算法:分析题意可得使者会带着去的城市也就是这个城市所在强 ...

  2. 【强联通分量缩点】【Tarjan】bzoj1051 [HAOI2006]受欢迎的牛

    就是看是否有一些点,从其他任何点出发都可到达 定理:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达. 所以缩点,若出度为零的点(强联通分量)唯一,则答案为该强联通分量中点的度数. 若不唯一, ...

  3. Tarjan求强联通分量+缩点

    提到Tarjan算法就不得不提一提Tarjan这位老人家 Robert Tarjan,计算机科学家,以LCA.强连通分量等算法闻名.他拥有丰富的商业工作经验,1985年开始任教于普林斯顿大学.Tarj ...

  4. 【最小割】【Dinic】【强联通分量缩点】bzoj1797 [Ahoi2009]Mincut 最小割

    结论: 满足条件一:当一条边的起点和终点不在 残量网络的 一个强联通分量中.且满流. 满足条件二:当一条边的起点和终点分别在 S 和 T 的强联通分量中.且满流.. 网上题解很多的. #include ...

  5. 【强联通分量缩点】【搜索】bzoj2208 [Jsoi2010]连通数

    两次dfs缩点,然后n次dfs暴搜. #include<cstdio> #include<vector> #include<cstring> using names ...

  6. 【POJ 1236 Network of Schools】强联通分量问题 Tarjan算法,缩点

    题目链接:http://poj.org/problem?id=1236 题意:给定一个表示n所学校网络连通关系的有向图.现要通过网络分发软件,规则是:若顶点u,v存在通路,发给u,则v可以通过网络从u ...

  7. [BZOJ1051] [HAOI2006] 受欢迎的牛 (强联通分量)

    Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也 ...

  8. poj 1236 强联通分量

    大致题意给你有一个点数为n<=100的有向图. 求解两个子任务: 1:最少给多少个点信息,这些点的信息可以顺着有向边传遍全图. 2:最少要加多少条边,使得整个图强联通. 求强联通分量再缩点后得到 ...

  9. POJ 2186 强联通分量

    点击打开链接 题意:牛A喜欢牛B,若牛B喜欢牛C,则牛A喜欢牛C,问最后多少牛被其它全部牛喜欢 思路:用强联通分量进行缩点,最后形成的图是有向无环图DAG.而拓扑序的值为DAG的长度,则加一,可是最后 ...

随机推荐

  1. 解决mysql的日志文件过大的问题

    https://www.2cto.com/database/201203/122984.html

  2. ACM模板~求第k短路 ~~~A*+Dijkstra

    #include <map> #include <set> #include <cmath> #include <ctime> #include < ...

  3. html初探

    HTML HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏 ...

  4. 【hdu4436/LA6387-str2int】sam处理不同子串

    题意:给出n个数字,数字很长,用字符串读入,长度总和为10^5.求这n个字符串的所有子串(不重复)的和取模2012 . 例如字符串101,和就是1+10+101=112. 题解: 就是求不同的子串连成 ...

  5. 【BZOJ】1725: [Usaco2006 Nov]Corn Fields牧场的安排

    [算法]状压DP [题解]对于上一行的每个状态,每行进行DFS. #include<cstdio> #include<algorithm> #include<cstrin ...

  6. IE 6 position不支持fixed属性的解决方案

    抛出另一个问题:IE7已经支持position:fixed了,而IE6却不支持,解决这个问题的办法如下: 现在有一个元素的id是element,它需要实现fixed效果,我们既想要它在正常的浏览器下使 ...

  7. Java任务调度框架----kunka

    初衷 工作中用到了很多框架,但是给我印象最深的还是我们PO(Product Owner)在若干年前写的一套任务调度框架,在JDK1.4之前,concurrent包还没有引入, 手写的这套Token调度 ...

  8. linux中链表的使用【转】

    转自:http://blog.csdn.net/finewind/article/details/8074990 Linux下链表的使用方法跟我们常规的不一样,通常情况下,链表的next指针都指向节点 ...

  9. 阿里云OSS Web端直传 服务器签名C#版

    最近用到队里OSS的文件上传,然后阿里官方给的四个服务器签名有Java PHP Python Go四个版本,就是没C#(话说写个C#有多难?) 百度了一下好像也没有,既然这样只能自己动手照着Java版 ...

  10. maven自动建立目录骨架

    maven提供archetype插件,用于创建符合maven规定的目录骨架. 方式一: 命令行执行mvn archetype:generate,在回显中依次写入如下参数: 执行完成会自动的生成响应的标 ...