LightOJ - 1074 Extended Traffic(标记负环)
题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市u到另一个城市v的时间为:(au-av)^3,存在负环。问从第一个城市到达第k个城市所话的时间,如果不能到达,或者时间小于3输出?否则输出所花的时间 .
解析:spfa判断负环 然后dfs标记负环
如果某个在环内 || d[e,v] == INF || d[e.v] < 3 则输出?
否则输出d[e.v]
- #include <iostream>
- #include <cstring>
- #include <cstdio>
- #include <queue>
- #include <cmath>
- #include <stack>
- #define mem(a,b) memset(a,b,sizeof(a))
- using namespace std;
- const int maxn = , INF = 0x7fffffff;
- int head[maxn], d[maxn], vis[maxn*maxn], des[maxn], ans[maxn], cir[maxn];
- int dot[maxn];
- int n, m, q;
- struct node{
- int u,v,w,next;
- }Node[maxn*maxn];
- void add(int u,int v,int w,int i)
- {
- Node[i].u = u;
- Node[i].v = v;
- Node[i].w = w;
- Node[i].next = head[u];
- head[u] = i;
- }
- void dfs(int u)
- {
- cir[u] = ;
- for(int i=head[u]; i!=-; i=Node[i].next)
- if(!cir[Node[i].v])
- dfs(Node[i].v);
- }
- void spfa(int s)
- {
- queue<int> Q;
- for(int i=; i<=n; i++) d[i] = INF;
- d[s] = ;
- mem(vis,);
- Q.push(s);
- vis[s] = ;
- while(!Q.empty())
- {
- int x = Q.front(); Q.pop();
- vis[x] = ;
- for(int i=head[x]; i!=-; i=Node[i].next)
- {
- node e = Node[i];
- if(cir[e.v]) continue; //!!!!!!!!!!!呵。。呵。。T了好几发才发现。。。。。
- if(d[e.v] > d[x] + e.w)
- {
- d[e.v] = d[x] + e.w;
- if(!vis[e.v])
- {
- Q.push(e.v);
- vis[e.v] = ;
- ans[e.v]++;
- if(ans[e.v] > n) dfs(e.v);
- }
- }
- }
- }
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- int cnt = ;
- while(T--)
- {
- mem(cir,);
- mem(ans,);
- mem(head,-);
- scanf("%d",&n);
- for(int i=; i<=n; i++)
- scanf("%d",&dot[i]);
- scanf("%d",&m);
- for(int i=; i<m; i++)
- {
- int u, v;
- scanf("%d%d",&u,&v);
- add(u,v,(dot[v]-dot[u])*(dot[v]-dot[u])*(dot[v]-dot[u]),i);
- }
- spfa();
- scanf("%d",&q);
- for(int i=; i<q; i++)
- scanf("%d",&des[i]);
- printf("Case %d:\n",++cnt);
- for(int i=; i<q; i++)
- if( cir[des[i]] || d[des[i]] == INF || d[des[i]] < )
- printf("?\n");
- else
- printf("%d\n",d[des[i]]);
- }
- return ;
- }
LightOJ - 1074 Extended Traffic(标记负环)的更多相关文章
- LightOJ - 1074 Extended Traffic (SPFA+负环)
题意:N个点,分别有属于自己的N个busyness(简称b),两点间若有边,则边权为(ub-vb)^3.Q个查询,问从点1到该点的距离为多少. 分析:既然是差的三次方,那么可能有负边权的存在,自然有可 ...
- LightOj 1074 Extended Traffic (spfa+负权环)
题目链接: http://lightoj.com/volume_showproblem.php?problem=1074 题目大意: 有一个大城市有n个十字交叉口,有m条路,城市十分拥挤,因此每一个路 ...
- LightOJ 1074 Extended Traffic SPFA 消负环
分析:一看就是求最短路,然后用dij,果断错了一发,发现是3次方,有可能会出现负环 然后用spfa判负环,然后标记负环所有可达的点,被标记的点答案都是“?” #include<cstdio> ...
- LightOJ 1074 - Extended Traffic (SPFA)
http://lightoj.com/volume_showproblem.php?problem=1074 1074 - Extended Traffic PDF (English) Stati ...
- LightOJ 1074 Extended Traffic (最短路spfa+标记负环点)
Extended Traffic 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/O Description Dhaka city ...
- LightOJ 1074 Extended Traffic(spfa+dfs标记负环上的点)
题目链接:https://cn.vjudge.net/contest/189021#problem/O 题目大意:有n个站点,每个站点都有一个busyness,从站点A到站点B的花费为(busynes ...
- lightoj 1074 - Extended Traffic(spfa+负环判断)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1074 题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市I到另一个城市J ...
- (简单) LightOJ 1074 Extended Traffic,SPFA+负环。
Description Dhaka city is getting crowded and noisy day by day. Certain roads always remain blocked ...
- SPFA(负环) LightOJ 1074 Extended Traffic
题目传送门 题意:收过路费.如果最后的收费小于3或不能达到,输出'?'.否则输出到n点最小的过路费 分析:关键权值可为负,如果碰到负环是,小于3的约束条件不够,那么在得知有负环时,把这个环的点都标记下 ...
随机推荐
- IOC框架之Ninject 简介
还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 上篇博客介绍了依赖注入的三种方式:构造方法注入,属性注入,接口注入!详情请参考 ...
- 51Nod 1677 treecnt
一道比较基础的计数题,还是一个常用的单独计算贡献的例子. 首先看题目和范围,暴力枚举肯定是不可行的,而且\(O(n\ logn)\)的算法貌似很难写. 那我们就来想\(O(n)\)的吧,我们单独考虑每 ...
- 基于HTML5 Canvas的工控SCADA模拟飞机飞行
昨天看到一篇文章说是学习如何开飞机的,然后我就想,如果我也可以开飞机那就好玩了,每个人小时候都想做飞行员!中国飞行员太难当了,再说也不轻易让你开飞机!后来我就想如果能用 HT 开飞机那就是真的有趣了, ...
- C_数据结构_递归A函数调用B函数
# include <stdio.h> int g(int); int f(int); int f(int n) { ) printf("haha\n"); else ...
- B. Views Matter
链接 [http://codeforces.com/contest/1061/problem/B] 题意 问你最多去掉多少块使得从上和右看,投影图不变 分析 注意细节,尤其第一列 代码 #includ ...
- 冲刺Two之站立会议9
今天我们团队主要针对软件的功能进行了改进.因为它目前可以实现视频通话,语音聊天,文件传输和文字聊天的通信功能,我们想要在它的基础上实现临时局域群聊和群聊视频的功能,目前还没有完全实现.
- ElasticSearch NEST笔记
ElasticSearch NEST笔记 1. 什么是ElasticSearch? ElasticSearch is a powerful open source search and analyti ...
- 现代程序设计 homework-01
搞了6个小时individual project...看看博客做一做第一次现代程序设计作业 1) 建立 GitHub 账户, 把课上做的 “最大子数组之和” 程序签入 我的github地址是https ...
- eclipse插件wordwrap
一行代码很长,浏览不方便,安装wordwrap可以自动折行. help->install new software-,在Workwith输入wordwrap - http://ahtik.com ...
- Notepad++和Sublime单词首字符大小写转化问题