Extended Traffic LightOJ - 1074 spfa判断负环
//判断负环 在负环内的城市输出?
#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判断负环的更多相关文章
- lightoj 1074 spfa判断负环
Extended Traffic Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Sub ...
- POJ 3259 Wormholes【最短路/SPFA判断负环模板】
农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...
- spfa判断负环
会了spfa这么长时间竟然不会判断负环,今天刚回.. [例题]poj3259 题目大意:当农场主 John 在开垦他的农场时,他发现了许多奇怪的昆虫洞.这些昆虫洞是单向的,并且可以把你从入口送到出口, ...
- spfa 判断负环 (转载)
当然,对于Spfa判负环,实际上还有优化:就是把判断单个点的入队次数大于n改为:如果总的点入队次数大于所有点两倍 时有负环,或者单个点的入队次数大于sqrt(点数)有负环.这样时间复杂度就降了很多了. ...
- Wormholes---poj3259(最短路 spfa 判断负环 模板)
题目链接:http://poj.org/problem?id=3259 题意是问是否能通过虫洞回到过去: 虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts. 我们把虫洞看成是一条负权路,问 ...
- POJ 3259 Wormholes ( SPFA判断负环 && 思维 )
题意 : 给出 N 个点,以及 M 条双向路,每一条路的权值代表你在这条路上到达终点需要那么时间,接下来给出 W 个虫洞,虫洞给出的形式为 A B C 代表能将你从 A 送到 B 点,并且回到 C 个 ...
- Wormholes POJ - 3259 spfa判断负环
//判断负环 dist初始化为正无穷 //正环 负无穷 #include<iostream> #include<cstring> #include<queue> # ...
- UVA 558 SPFA 判断负环
这个承认自己没看懂题目,一开始以为题意是形成环路之后走一圈不会产生负值就输出,原来就是判断负环,用SPFA很好用,运用队列,在判断负环的时候,用一个数组专门保存某个点的访问次数,超过了N次即可断定有负 ...
- POJ3259 Wormholes(SPFA判断负环)
Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...
随机推荐
- 【WPF学习】第四十九章 基本动画
在前一章已经学习过WPF动画的第一条规则——每个动画依赖于一个依赖项属性.然而,还有另一个限制.为了实现属性的动态化(换句话说,使用基于时间的方式改变属性的值),需要有支持相应数据类型的动画类.例如, ...
- console控制台的用法
参考链接:https://developer.mozilla.org/zh-CN/docs/Web/API/Console 1,console.log('a'); 2,console.dir(xx); ...
- C#设计模式学习笔记:(17)中介者模式
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7966240.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第五个模式--中 ...
- cookie的设置与取值
设置cookie function cookie(key, value, options) { let days let time let result // A key and value were ...
- VMware使用与安装
VMware安装 下载完Vmware -> 双击打开安装包 -> 选择下一步(如下图界面) 选择接受协议,点击下一步 选择经典进行安装.这个是默认安装,会把默认插件安装到相对应的路径 选择 ...
- sql server 基本操作
1输入如下命令,即可通过SQL Server命令行启动.停止或暂停的服务. SQL Server命令行如下: 启动SQL ServerNET START MSSQLSERVER 暂停SQL Serve ...
- js对象模型1
- Oracle修改用户Profile SESSIONS_PER_USER 限制
一.Profile目的: Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如 ...
- SVN仓库备份和迁移
SVN仓库备份和迁移 author: yunqimg(ccxtcxx0) 前言 本文主要是讲 SVN 仓库的全量备份和增量备份,只包括基本操作. 如有疑问请参考 References. 仓库备份 sv ...
- 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)
qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...