[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=3126

[算法]

差分约束系统

注意SPFA判负环的条件应为 : 若所有点入队次数之和 > 点数 + 边数,说明有负环

[代码]

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define MAXN 200010
  4. const int inf = 2e9;
  5.  
  6. int n,m,tot;
  7. int head[MAXN];
  8.  
  9. struct edge
  10. {
  11. int to,w,nxt;
  12. } e[MAXN << ];
  13.  
  14. template <typename T> inline void read(T &x)
  15. {
  16. int f = ; x = ;
  17. char c = getchar();
  18. for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
  19. for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
  20. x *= f;
  21. }
  22. inline void addedge(int u,int v,int w)
  23. {
  24. tot++;
  25. e[tot] = (edge){v,w,head[u]};
  26. head[u] = tot;
  27. }
  28. inline int spfa(int s)
  29. {
  30. int l,r,cnt = ;
  31. static int dist[MAXN];
  32. static bool inq[MAXN];
  33. priority_queue< int , vector< int > , greater< int > > q;
  34. while (!q.empty()) q.pop();
  35. for (register int i = ; i <= n; i++)
  36. {
  37. dist[i] = inf;
  38. inq[i] = false;
  39. }
  40. q.push(s);
  41. dist[s] = ;
  42. inq[s] = true;
  43. cnt = ;
  44. while (!q.empty())
  45. {
  46. int u = q.top();
  47. q.pop();
  48. inq[u] = false;
  49. for (register int i = head[u]; i; i = e[i].nxt)
  50. {
  51. int v = e[i].to , w = e[i].w;
  52. if (dist[u] + w < dist[v])
  53. {
  54. dist[v] = dist[u] + w;
  55. if (!inq[v])
  56. {
  57. cnt++;
  58. if (cnt > * m + * n) return -;
  59. inq[v] = true;
  60. q.push(v);
  61. }
  62. }
  63. }
  64. }
  65. return dist[n] == inf ? - : dist[n];
  66. }
  67.  
  68. int main()
  69. {
  70.  
  71. read(n); read(m);
  72. for (register int i = ; i <= m; i++)
  73. {
  74. int a,b;
  75. read(a); read(b);
  76. if (a > b) swap(a,b);
  77. addedge(a - ,b,);
  78. addedge(b,a - ,-);
  79. }
  80. for (register int i = ; i <= n; i++)
  81. {
  82. addedge(i,i - ,);
  83. addedge(i - ,i,);
  84. }
  85. printf("%d\n",spfa());
  86.  
  87. return ;
  88. }

[BZOJ 3126] Photo的更多相关文章

  1. 数据结构(线段树):BZOJ 3126: [Usaco2013 Open]Photo

    3126: [Usaco2013 Open]Photo Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 222  Solved: 116 Descrip ...

  2. Bzoj 3126[Usaco2013 Open]Photo 题解

    3126: [Usaco2013 Open]Photo Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 335  Solved: 169[Submit] ...

  3. ●BZOJ 3126 [Usaco2013 Open]Photo

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3126 题解: 单调队列优化DP,神奇.. (好像某次考试考过,当时我用了差分约束+SPFA优 ...

  4. bzoj 3126: [Usaco2013 Open]Photo——单调队列优化dp

    Description 给你一个n长度的数轴和m个区间,每个区间里有且仅有一个点,问能有多少个点 Input * Line 1: Two integers N and M. * Lines 2..M+ ...

  5. BZOJ 3126 [USACO2013 Open]Photo (单调队列优化DP)

    洛谷传送门 题目大意:给你一个长度为$n$的序列和$m$个区间,每个区间内有且仅有一个1,其它数必须是0,求整个序列中数字1最多的数量 神题,竟然是$DP$ 定义$f_{i}$表示第i位放一个1时,最 ...

  6. bzoj 3126 单调队列优化dp

    能转移的最左是其左边完整区间的最右左端点,最右是能覆盖它的最左左端点-1 #pragma GCC optimize ("O3") #include<cstdio> #i ...

  7. bzoj usaco 金组水题题解(2)

    续.....TAT这回不到50题编辑器就崩了.. 这里塞40道吧= = bzoj 1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害 比较经典的最小割?..然而 ...

  8. USACO 刷题记录bzoj

    bzoj 1606: [Usaco2008 Dec]Hay For Sale 购买干草——背包 #include<cstdio> #include<cstring> #incl ...

  9. bzoj3126[Usaco2013 Open]Photo 单调队列优化dp

    3126: [Usaco2013 Open]Photo Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 374  Solved: 188[Submit] ...

随机推荐

  1. 使用JS获取request参数

    1.document.write('<%=request.getAttribute("param")%>'); 2.window.navigator.userAgent ...

  2. P1036 选数(DFS)

    题目 https://www.luogu.org/problemnew/show/P1036 思路 搜索,使用递归实现dfs,所有数字遍历一遍,当取遍所有数组的index(扫了一遍,并非一定是选取了) ...

  3. springmvc视图解析

    SpringMVC 视图解析的几种方式: 在视图解析的过程中,需要知道逻辑view的名字,model的名字以访问model和view. 使用jsp进行解析,InternalResourceViewRe ...

  4. 【DIP, 图像增强】

    第四章 图像增强 图像增强是按特定的需要突出一幅图像中的某些信息,同时削弱或者去除某些不需要的信息的处理方法.其主要目的是使处理后的图像对某种特定的应用来说,比原始图像更加适用.因此这类处理是为了某种 ...

  5. EasyUI Datagrid的简单使用

    此前同样写过EasyUI Datagrid的demo,好记性不如烂笔头,何况记性也不是那么好,赶紧记录一下.照搬上一篇EasyUI Tree的格式. 实现效果:获取数据库表的数据,在EasyUI Da ...

  6. noip模拟赛 轰炸

    题目描述 C国和W国爆发了战争!YJC决定对W国的n个城市进行轰炸.每个城市都有一个重要度ai.设xi=‘重要度大于ai的城市数+1’,那么编号为i城市就是第xi个被轰炸的城市.显然这样能保证重要度大 ...

  7. Linux command2

    . CentOS 想查看哪个port开了,却提示命令无效 # yum -y install net-tools 2. How to install "wget" command i ...

  8. 工作流框架Activiti

    最近在看一些项目设计方面的文章,涉及到了工作流技术,于是了解一下. 1.概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照 ...

  9. 将完整的Maven远程存储库下载到本地存储库(别试了,不太可取)

    别试了,这种方式不太可取. 要解决可以有如下思路: 1.做成镜像站点,有如下命令: wget -m http://site.to.mirror.com #-m代表“镜子”. rsync repo1.m ...

  10. Linux: 查找使用中的port

    找出所有使用中的port netstat -tulpn 输出 Active Internet connections (only servers) Proto Recv-Q Send-Q Local ...