LightOJ-1074 Extended Traffic 最短路问题 注意连通性
题目链接:https://cn.vjudge.net/problem/LightOJ-1074
题意
给一图
求最短路
若最短路<3或没有最短路,则输出'?'
思路
首先注意到可能存在负环,所以想到Bellman
这时注意检测出负环时,需要找到所有与其连通的节点(dfs处理)
然而这是一道怪题。。。
用long long存边权,WA5发
改成int存边权才过
怀疑我是哪里运算问题了
代码
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=220, maxm=maxn*maxn, INF=0x3f3f3f3f;
struct Edge{
int to, dis, next;
}edges[maxm+5];
int busy[maxn+5], head[maxn+5], esize;
int dist[maxn+5];
bool vis[maxn+5];
inline void addEdge(int from, int to, int dis){
edges[esize]=(Edge){to, dis*dis*dis, head[from]};
head[from]=esize++;
}
void dfs(int x){
vis[x]=true;
for (int i=head[x]; i!=-1; i=edges[i].next){
Edge &e=edges[i];
if (vis[e.to]) continue;
dfs(e.to);
}
}
void Bellman(int n){
bool inq[maxn+5]={false};
int cnt[maxn+5]={0};
queue<int> que;
memset(dist, INF, sizeof(dist));
memset(vis, false, sizeof(vis));
dist[1]=0; inq[1]=true;
que.push(1);
while (que.size()){
int from=que.front(); que.pop();
inq[from]=false;
for (int i=head[from]; i!=-1; i=edges[i].next){
Edge &e=edges[i];
int &to=e.to, &dis=e.dis;
if (vis[to]) continue;
if (dist[to]<=dist[from]+dis) continue;
dist[to]=dist[from]+dis;
if (inq[to]) continue;
if (++cnt[to]>=n) dfs(to);
else que.push(to);
inq[to]=true;
}
}
}
void init(void){
memset(head, -1, sizeof(head));
esize=0;
}
int main(void){
int T, n, m, q, from, to;
scanf("%d", &T);
for (int cnt=1; cnt<=T; cnt++){
init();
scanf("%d", &n);
for (int i=1; i<=n; i++) scanf("%d", &busy[i]);
scanf("%d", &m);
for (int i=0; i<m; i++){
scanf("%d%d", &from, &to);
addEdge(from, to, busy[to]-busy[from]);
}
Bellman(n);
scanf("%d", &q);
printf("Case %d:\n", cnt);
while (q--){
scanf("%d", &from);
if (vis[from] || dist[from]<3 || dist[from]==INF) printf("?\n");
else printf("%d\n", dist[from]);
}
}
return 0;
}
| Time | Memory | Length | Lang | Submitted |
|---|---|---|---|---|
| 48ms | 1816kB | 2033 | C++ | 2018-06-01 17:50:02 |
LightOJ-1074 Extended Traffic 最短路问题 注意连通性的更多相关文章
- 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+负权环)
题目链接: http://lightoj.com/volume_showproblem.php?problem=1074 题目大意: 有一个大城市有n个十字交叉口,有m条路,城市十分拥挤,因此每一个路 ...
- 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 ...
- LightOJ 1074 Extended Traffic(spfa+dfs标记负环上的点)
题目链接:https://cn.vjudge.net/contest/189021#problem/O 题目大意:有n个站点,每个站点都有一个busyness,从站点A到站点B的花费为(busynes ...
- SPFA(负环) LightOJ 1074 Extended Traffic
题目传送门 题意:收过路费.如果最后的收费小于3或不能达到,输出'?'.否则输出到n点最小的过路费 分析:关键权值可为负,如果碰到负环是,小于3的约束条件不够,那么在得知有负环时,把这个环的点都标记下 ...
- LightOJ 1074 Extended Traffic SPFA 消负环
分析:一看就是求最短路,然后用dij,果断错了一发,发现是3次方,有可能会出现负环 然后用spfa判负环,然后标记负环所有可达的点,被标记的点答案都是“?” #include<cstdio> ...
- LightOJ 1074 - Extended Traffic 【SPFA】(经典)
<题目链接> 题目大意:有n个城市,每一个城市有一个拥挤度Ai,从一个城市I到另一个城市J的时间为:(A(v)-A(u))^3.问从第一个城市到达第k个城市所花的时间,如果不能到达,或者时 ...
- LightOJ - 1074 Extended Traffic(标记负环)
题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市u到另一个城市v的时间为:(au-av)^3,存在负环.问从第一个城市到达第k个城市所话的时间,如果不能到达,或者时间小于3输出?否则输出所花的 ...
随机推荐
- ZBrush中Document特性介绍
ZBrush®中的Document调色板用于加载或保存ZBrush文档,导入背景图像.导出背景图像.调整画布大小和设置背景颜色.本文小编来给大家介绍下Document常用的一些基本功能. ZBrush ...
- 用Javascript做一个“获取验证码”的按钮
要求:①点击按钮后背景色会发生改变②有倒计时(一般为30秒) <!DOCTYPE HTML> <html> <head> <meta charset=&quo ...
- 分清encodeURIComponent encodeURI 和 escape
encodeURIComponent encodeURI escape 目的:这三个函数的作用都是让一段字符串在所有电脑(所有国家区域语言)上可读. escape对字符串进行处理: encodeURI ...
- hdu 1693 插头dp入门
hdu1693 Eat the Trees 题意 在\(n*m\)的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少种方法. 解法 这是一道插头dp的入门题,只需要 ...
- [luogu2059 JLOI2013] 卡牌游戏 (概率dp)
题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把 ...
- [CodeForces]1006F Xor Path
双向搜索. 水div3的时候最后一道题由于C题死活看不懂题 来不及做F了Orz.. 因为n,m是20,双向搜索一下,求个到中间的Xor值的方案,统计一下即可. 时间复杂度\(O(2^{21})\) 好 ...
- https的基本原理,看完你的程序员女朋友再也不和你提分手了
[http风险] 首先,我们来讲一下平时上网的时候,存在的风险. 初步接触过网络的同学都知道,网络上是很不安全的,尤其是各种公共场合的免费WIFI,以及手机上各种免费上网的万能钥匙.这些不安全因素会导 ...
- oracle 数据类型及函数
第一节:字符串类型及函数 字符类型分 3 种,char(n) .varchar(n).varchar2(n) : char(n)固定长度字符串,假如长度不足 n,右边空格补齐: varchar(n)可 ...
- 利用VisualVM监视远程JVM
VisualVM介绍 VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump.Thread Dump.内存对象实例情况.GC ...
- 少年 DXH
少年 DXH 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 大家都知道,DXH 幼时性格怪癖,小朋友都不喜欢和他玩,这样的情况一直到 DXH 的少年时期也没有改变. ...