题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市u到另一个城市v的时间为:(au-av)^3,存在负环。问从第一个城市到达第k个城市所话的时间,如果不能到达,或者时间小于3输出?否则输出所花的时间 .

解析:spfa判断负环  然后dfs标记负环

如果某个在环内  || d[e,v] == INF || d[e.v] < 3  则输出?

否则输出d[e.v]

  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. #include <queue>
  5. #include <cmath>
  6. #include <stack>
  7. #define mem(a,b) memset(a,b,sizeof(a))
  8. using namespace std;
  9. const int maxn = , INF = 0x7fffffff;
  10. int head[maxn], d[maxn], vis[maxn*maxn], des[maxn], ans[maxn], cir[maxn];
  11. int dot[maxn];
  12. int n, m, q;
  13. struct node{
  14. int u,v,w,next;
  15. }Node[maxn*maxn];
  16.  
  17. void add(int u,int v,int w,int i)
  18. {
  19. Node[i].u = u;
  20. Node[i].v = v;
  21. Node[i].w = w;
  22. Node[i].next = head[u];
  23. head[u] = i;
  24. }
  25.  
  26. void dfs(int u)
  27. {
  28. cir[u] = ;
  29. for(int i=head[u]; i!=-; i=Node[i].next)
  30. if(!cir[Node[i].v])
  31. dfs(Node[i].v);
  32. }
  33.  
  34. void spfa(int s)
  35. {
  36. queue<int> Q;
  37. for(int i=; i<=n; i++) d[i] = INF;
  38. d[s] = ;
  39. mem(vis,);
  40. Q.push(s);
  41. vis[s] = ;
  42. while(!Q.empty())
  43. {
  44. int x = Q.front(); Q.pop();
  45. vis[x] = ;
  46. for(int i=head[x]; i!=-; i=Node[i].next)
  47. {
  48. node e = Node[i];
  49. if(cir[e.v]) continue; //!!!!!!!!!!!呵。。呵。。T了好几发才发现。。。。。
  50. if(d[e.v] > d[x] + e.w)
  51. {
  52. d[e.v] = d[x] + e.w;
  53. if(!vis[e.v])
  54. {
  55. Q.push(e.v);
  56. vis[e.v] = ;
  57. ans[e.v]++;
  58. if(ans[e.v] > n) dfs(e.v);
  59. }
  60. }
  61. }
  62. }
  63. }
  64.  
  65. int main()
  66. {
  67. int T;
  68. scanf("%d",&T);
  69. int cnt = ;
  70. while(T--)
  71. {
  72. mem(cir,);
  73. mem(ans,);
  74. mem(head,-);
  75. scanf("%d",&n);
  76. for(int i=; i<=n; i++)
  77. scanf("%d",&dot[i]);
  78. scanf("%d",&m);
  79. for(int i=; i<m; i++)
  80. {
  81. int u, v;
  82. scanf("%d%d",&u,&v);
  83. add(u,v,(dot[v]-dot[u])*(dot[v]-dot[u])*(dot[v]-dot[u]),i);
  84. }
  85. spfa();
  86. scanf("%d",&q);
  87. for(int i=; i<q; i++)
  88. scanf("%d",&des[i]);
  89. printf("Case %d:\n",++cnt);
  90. for(int i=; i<q; i++)
  91. if( cir[des[i]] || d[des[i]] == INF || d[des[i]] < )
  92. printf("?\n");
  93. else
  94. printf("%d\n",d[des[i]]);
  95.  
  96. }
  97.  
  98. return ;
  99. }

LightOJ - 1074 Extended Traffic(标记负环)的更多相关文章

  1. LightOJ - 1074 Extended Traffic (SPFA+负环)

    题意:N个点,分别有属于自己的N个busyness(简称b),两点间若有边,则边权为(ub-vb)^3.Q个查询,问从点1到该点的距离为多少. 分析:既然是差的三次方,那么可能有负边权的存在,自然有可 ...

  2. LightOj 1074 Extended Traffic (spfa+负权环)

    题目链接: http://lightoj.com/volume_showproblem.php?problem=1074 题目大意: 有一个大城市有n个十字交叉口,有m条路,城市十分拥挤,因此每一个路 ...

  3. LightOJ 1074 Extended Traffic SPFA 消负环

    分析:一看就是求最短路,然后用dij,果断错了一发,发现是3次方,有可能会出现负环 然后用spfa判负环,然后标记负环所有可达的点,被标记的点答案都是“?” #include<cstdio> ...

  4. LightOJ 1074 - Extended Traffic (SPFA)

    http://lightoj.com/volume_showproblem.php?problem=1074 1074 - Extended Traffic   PDF (English) Stati ...

  5. LightOJ 1074 Extended Traffic (最短路spfa+标记负环点)

    Extended Traffic 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/O Description Dhaka city ...

  6. LightOJ 1074 Extended Traffic(spfa+dfs标记负环上的点)

    题目链接:https://cn.vjudge.net/contest/189021#problem/O 题目大意:有n个站点,每个站点都有一个busyness,从站点A到站点B的花费为(busynes ...

  7. lightoj 1074 - Extended Traffic(spfa+负环判断)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1074 题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市I到另一个城市J ...

  8. (简单) LightOJ 1074 Extended Traffic,SPFA+负环。

    Description Dhaka city is getting crowded and noisy day by day. Certain roads always remain blocked ...

  9. SPFA(负环) LightOJ 1074 Extended Traffic

    题目传送门 题意:收过路费.如果最后的收费小于3或不能达到,输出'?'.否则输出到n点最小的过路费 分析:关键权值可为负,如果碰到负环是,小于3的约束条件不够,那么在得知有负环时,把这个环的点都标记下 ...

随机推荐

  1. 15-(基础入门篇)GPRS(Air202)GPIO控制点亮一个灯

    https://www.cnblogs.com/yangfengwu/p/9967027.html 现在点亮它,说一下哈,都过去好久了,不知道大家都在用哪个版本的库 http://www.openlu ...

  2. http一次请求过程

    物理层:支持底层网络协议: 其中网络层支持IP协议: 传输层支持TCP协议,它是面向连接的: 应用层支持 http,ftp  tftp,SMTP,DHCP协议 一个完整的http请求过程: 1.浏览器 ...

  3. img图片加载出错处理(转载)

    为了美观当网页图片不存在时不显示叉叉图片当在页面显示的时候,万一图片被移动了位置或者丢失的话,将会在页面显示一个带X的图片,很是影响用户的体验.即使使用alt属性给出了”图片XX”的提示信息,也起不了 ...

  4. Lean Data Innovation Sharing Salon(2018.09.15)

    时间:2018.09.15地点:北京国华投资大厦

  5. WebApi 接口返回值不困惑:返回值类型详解。IHttpActionResult、void、HttpResponseMessage、自定义类型

    首先声明,我还没有这么强大的功底,只是感觉博主写的很好,就做了一个复制,请别因为这个鄙视我,博主网址:http://www.cnblogs.com/landeanfen/p/5501487.html ...

  6. Luogu P1966 火柴排队

    这还是一道比较简单的题目,稍微想一下就可以解决.终于有NOIP难度的题目了 首先我们看那个∑(ai-bi)^2的式子,发现这个的最小值就是排序不等式 所以我们只需要改变第一组火柴的顺序,使它和第二组火 ...

  7. 阿里Java面经大全(整合版)

    本文里的面经内容全部来源于牛客网,作为秋招备战复习与查缺补漏时使用.里面部分面经有我的注释和想法,以及部分解答,不一定正确,大家可以查询补充. 阿里巴巴,三面,java实习 昨天晚上11点打电话来,问 ...

  8. nginx解决前端跨域配置

    在nginx.conf文件中 添加如上配置: 在ajax中将原来的 url:http://192.168.1.127:8905/findItem 改成:'http://localhost/findIt ...

  9. 用JS制作一个信息管理平台(1)

    首先,介绍一些需要用到的基本知识. [JSON] JSON是数据交互中,最常用的一种数据格式. 由于各种语言的语法都不相同,在传递数据时,可以将自己语言中的数组.对象等转换为JSON字符串. 传递之后 ...

  10. Vuex实现原理解析

    我们在使用Vue.js开发复杂的应用时,经常会遇到多个组件共享同一个状态,亦或是多个组件会去更新同一个状态,在应用代码量较少的时候,我们可以组件间通信去维护修改数据,或者是通过事件总线来进行数据的传递 ...