题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1074

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

只要用spfa判断一下负环然后和负环上点相关联的点都可以实现距离无线小所以如果是关联点标记一下。

如果遇到标记点就没有必要再入队,减少复杂度

#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdio>
#include <queue>
using namespace std;
const long long inf = 999999999;
int n , m , q , x , y;
long long val[210] , dis[210];
long long GETS(int x , int y) {
return (val[x] - val[y]) * (val[x] - val[y]) * (val[x] - val[y]);
}
struct TnT {
int u , v , next;
long long w;
}T[40050];
int head[210] , cnt[210] , e;
void init() {
e = 0;
for(int i = 1 ; i <= n ; i++) {
head[i] = -1;
}
}
void add(int u , int v , long long w) {
T[e].v = v;
T[e].w = w;
T[e].next = head[u];
head[u] = e++;
}
bool vis[210] , cir[210];
void dfs(int x) {
cir[x] = true;
for(int i = head[x] ; i != - 1 ; i = T[i].next) {
if(!cir[T[i].v]) {
dfs(T[i].v);
}
}
}
void spfa(int sta) {
memset(vis , false , sizeof(vis));
memset(cnt , 0 , sizeof(cnt));
memset(cir , false , sizeof(cir));
queue<int>q;
q.push(sta);
cnt[sta]++;
vis[sta] = true;
dis[sta] = 0;
while(!q.empty()) {
int m = q.front();
vis[m] = false;
q.pop();
for(int i = head[m] ; i != - 1 ; i = T[i].next) {
int v = T[i].v ;
long long w = T[i].w;
if(cir[v])
continue;
if(dis[v] > dis[m] + w) {
dis[v] = dis[m] + w;
if(!vis[v]) {
cnt[v]++;
vis[v] = true;
q.push(v);
if(cnt[v] > n)
dfs(v);
}
}
}
}
}
int main() {
int t , ans = 0 , gg;
scanf("%d" , &t);
while(t--) {
ans++;
scanf("%d" , &n);
for(int i = 1 ; i <= n ; i++) {
dis[i] = inf;
}
init();
for(int i = 1 ; i <= n ; i++) {
scanf("%lld" , &val[i]);
}
scanf("%d" , &m);
for(int i = 1 ; i <= m ; i++) {
scanf("%d%d" , &x , &y);
add(x , y , GETS(y , x));
}
printf("Case %d:\n" , ans);
scanf("%d" , &q);
spfa(1);
for(int i = 1 ; i <= q ; i++) {
scanf("%d" , &gg);
if(cir[gg] || dis[gg] == inf || dis[gg] < 3) {
printf("?\n");
}
else {
printf("%lld\n" , dis[gg]);
}
}
}
return 0;
}

lightoj 1074 - Extended Traffic(spfa+负环判断)的更多相关文章

  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+dfs标记负环上的点)

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

  4. LightOJ 1074 Extended Traffic SPFA 消负环

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

  5. LightOJ 1074 - Extended Traffic (SPFA)

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

  6. spfa负环判断

    正常spfa中加入time数组,循环判断一个点是否入队并更新了n次以上注意是 > n!!其余的没有什么问题 扩展的还有,寻找所有负环上的点,这个可以在spfa中time 发现负环的时候,对那个点 ...

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

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

  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. codeforces 371A K-Periodic Array

    很简单,就是找第i位.i+k位.i+2*k位...........i+m*k位有多少个数字,计算出每个数出现的次数,找到出现最多的数,那么K-Periodic的第K位数肯定是这个了.这样的话需要替换的 ...

  2. Js面向对象构造函数继承

    构造函数继承 <!-- 创建构造函数 --> function Animal(){ this.species= '动物'; } function Dog(name,color){ this ...

  3. win10去除快捷方式小箭头

    切忌删除注册表项: HKEY_CLASSES_ROOT -> lnkfile -> IsShortcut 这个方法以前是可以的,但是在2018年之后更新的系统就会出现任务栏图标打不开的情况 ...

  4. Cannot attach the file “MvcMovie.mdf” as database “aspnet-MvcMovie”

    今天在微软开发人员官网上学习asp.net mvc5入门的时候,遇到一个棘手的问题,我是按照教程一步一步操作的,但期间遇到一个自己觉得莫名其妙的问题,教程中也没有提到这个, 在添加新字段这一章节,跟着 ...

  5. GooglePlay新版排行榜接入

    新版本的GMS的api和老版本的有很大的差异,刚接了一下,在这里留一个记号,以便查阅:判定是否已经登录 private static boolean isSignedIn(Cocos2dxActivi ...

  6. String——字符串

    首先看一下string的一部分源码吧 public final class String private final char value[]; 我们暂且只看这两行, 第一行String被final修 ...

  7. HTML/CSS:div居中和div内部元素垂直居中(1)

    div居中 div水平和垂直居中,text-align和vertical-align不起作用,因为标签div没有这两个属性,所以再css中设置这两个值不能居中的效果 1. div水平居中:设置marg ...

  8. android——SQLite数据库存储(创建)

    Android 专门提供了SQLiteOpenHelper帮助类,借助这个类就可以非常简单的对数据库进行创建和升级. 首先SQLiteOpenHelper是一个抽象类,在使用的时候需要创建一个自己的帮 ...

  9. LayDate使用

    layDate非常愿意和您成为工作伙伴.她致力于成为全球最用心的web日期支撑,为国内外所有从事web应用开发的同仁提供力所能及的动力.她基于原生JavaScript精心雕琢,兼容了包括IE6在内的所 ...

  10. MySQL-EXPLAIN执行计划Extra解释

    EXPLAIN命令输出的列中Extra字段可选值较多,这里单独说一下. 该Extra列 EXPLAIN输出包含MySQL解决查询的额外信息.以下列表说明了此列中可能出现的值.每个项目还指示JSON格式 ...