//判断负环  在负环内的城市输出?
#include <iostream>
#include <queue>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <string>
using namespace std;
typedef long long LL;
const int N=4e5+;
int abc[];
int T,n,m,q;
int h[N],e[N],ne[N],w[N],idx;
int len(int u,int v){
return (abc[v]-abc[u])*(abc[v]-abc[u])*(abc[v]-abc[u]);
}
void add(int a,int b)
{
e[idx]=b;
w[idx]=len(a,b);
ne[idx]=h[a];
h[a]=idx++;
}
int dist[],st[],times[],cycle[];
void spfa()
{
memset(dist,,sizeof(dist));
memset(st,,sizeof(st));
memset(times,,sizeof(times));
memset(cycle,,sizeof(cycle));
queue<int>q;
st[]=times[]=;
dist[]=;
q.push();
while(q.size())
{
int u=q.front();
q.pop();
st[u]=;
for(int i=h[u];~i;i=ne[i])
{
int v=e[i];
if(cycle[v])
continue;
if(dist[v]-dist[u]>w[i])
{
dist[v]=dist[u]+w[i];
if(!st[v])
{
st[v]=;
times[v]++;
q.push(v);
}
if(times[v]>n)
cycle[v]=;
}
}
}
}
int main()
{
cin>>T;
for(int t=;t<=T;t++)
{
idx=;
memset(h,-,sizeof h);
cin>>n;
for(int i=;i<=n;i++)
cin>>abc[i];
cin>>m;
int a,b;
while(m--)
{
cin>>a>>b;
add(a,b);
}
spfa();
cin>>q;
printf("Case %d:\n",t);
while(q--)
{
cin>>a;
if(dist[a]<||dist[a]>=(int)1e9||cycle[a])
printf("?\n");
else
printf("%d\n",dist[a]);
}
}
}

Extended Traffic LightOJ - 1074 spfa判断负环的更多相关文章

  1. lightoj 1074 spfa判断负环

     Extended Traffic Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Sub ...

  2. POJ 3259 Wormholes【最短路/SPFA判断负环模板】

    农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...

  3. spfa判断负环

    会了spfa这么长时间竟然不会判断负环,今天刚回.. [例题]poj3259 题目大意:当农场主 John 在开垦他的农场时,他发现了许多奇怪的昆虫洞.这些昆虫洞是单向的,并且可以把你从入口送到出口, ...

  4. spfa 判断负环 (转载)

    当然,对于Spfa判负环,实际上还有优化:就是把判断单个点的入队次数大于n改为:如果总的点入队次数大于所有点两倍 时有负环,或者单个点的入队次数大于sqrt(点数)有负环.这样时间复杂度就降了很多了. ...

  5. Wormholes---poj3259(最短路 spfa 判断负环 模板)

    题目链接:http://poj.org/problem?id=3259 题意是问是否能通过虫洞回到过去: 虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts. 我们把虫洞看成是一条负权路,问 ...

  6. POJ 3259 Wormholes ( SPFA判断负环 && 思维 )

    题意 : 给出 N 个点,以及 M 条双向路,每一条路的权值代表你在这条路上到达终点需要那么时间,接下来给出 W 个虫洞,虫洞给出的形式为 A B C 代表能将你从 A 送到 B 点,并且回到 C 个 ...

  7. Wormholes POJ - 3259 spfa判断负环

    //判断负环 dist初始化为正无穷 //正环 负无穷 #include<iostream> #include<cstring> #include<queue> # ...

  8. UVA 558 SPFA 判断负环

    这个承认自己没看懂题目,一开始以为题意是形成环路之后走一圈不会产生负值就输出,原来就是判断负环,用SPFA很好用,运用队列,在判断负环的时候,用一个数组专门保存某个点的访问次数,超过了N次即可断定有负 ...

  9. POJ3259 Wormholes(SPFA判断负环)

    Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...

随机推荐

  1. typeof和类型转换

    编程形式 ① 面向过程 ② 面向对象 ③ Js既面向过程又面向对象 typeof(数据) 1)typeof(数据)返回该数据是什么类型的 2)写法: ① typeof(数据) ② typeof 数据 ...

  2. C# NewtonJson Serialize and deserialize

    using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using Sys ...

  3. HA: Dhanush Vulnhub Walkthrough

    靶机下载链接: https://www.vulnhub.com/entry/ha-dhanush,396/ 主机扫描: 主机端口扫描: HTTP目录爬取 使用dirb dirsearch 爬取均未发现 ...

  4. k8s强制删除pod

    有时候pod一直在Terminating kubectl delete pod xxx --force --grace-period=

  5. Java面向对象入门(2)-访问修饰符

    Java访问修饰符–public, protected, private and default Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即public,private, ...

  6. java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码

    .   权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限      角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限.      按钮权限: 给角色分配按钮权限.2 ...

  7. PL/SQL不安装Oracle连接,Oracle instantclient安装

    ================================ ©Copyright 蕃薯耀 2020-01-07 https://www.cnblogs.com/fanshuyao/ 第一步: 下 ...

  8. 使用node.js实现apache功能

    1.先实现在url中输入文件路径能展示对应文件内容功能 const http = require('http') const fs = require('fs') const server = htt ...

  9. 使用jdbc实现ActiveMQ持久化

    步骤一:创建一个数据库 步骤二:配置activemq.xml配置文件 1.在persistenceAdapter加入如下配置 <!--createTablesOnStartup 启动是否创建表 ...

  10. 使用 TypeScript & mocha & chai 写测试代码实战(17 个视频)

    使用 TypeScript & mocha & chai 写测试代码实战(17 个视频) 使用 TypeScript & mocha & chai 写测试代码实战 #1 ...