题目大意:每一个城市都有一定的繁荣度,然后给出m条有向边i->j,定义这条边的权值为pow(arr[j]-arr[i],3),然后给你q个询问,每个询问输入一个x。

然后问你点1到x的距离,如果小与3或者不可到达,那么输出?,否则的话就输出dis[x]。

题解:如果说这是一个无向图,那么如果这个图内存在负环,那么输出一定是?,因为点y假设可以到打1,那么就可以通过负环无限减小到y的距离,这样的话一定是小于3的。但这是个有向图,该怎么操作呢?我们可以把与负环相连接的元素给他打上标记,另外,如果说点z和负环相连,也就没必要对z进行松弛了...

code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1e18+;
const ll N=1e5+;
struct stu{
ll to,nxt;
ll weight;
}edge[N];
ll time1=;
ll n;
ll cnt=,head[N];
ll dis[N];
bool mark[N],cir[N];
ll num[N];
ll value[N];
void add(ll x,ll y,ll weight){
edge[cnt].to=y;
edge[cnt].weight=weight;
edge[cnt].nxt=head[x];
head[x]=cnt++;
}
void dfs(int v){
cir[v]=;
for(int i=head[v];i!=-;i=edge[i].nxt){
v=edge[i].to;
if(!cir[v]) dfs(v);
}
}
bool spfa(){
for(ll i=;i<=n;i++) dis[i]=INF;
memset(cir,,sizeof cir);
memset(mark,,sizeof mark);
memset(num,,sizeof num);
dis[]=;
queue<ll>que;
que.push();
num[]++;
mark[]=;
while(que.size()){
ll u=que.front();
que.pop();
mark[u]=;
for(ll i=head[u];i!=-;i=edge[i].nxt){
ll v=edge[i].to;
if(cir[v]) continue ;
if(dis[v]>dis[u]+edge[i].weight){
dis[v]=dis[u]+edge[i].weight;
if(!mark[v]) {
num[v]++;
mark[v]=;
que.push(v);
if(num[v]>=n) dfs(v);
}
}
}
}
return ;
}
void solve(){
memset(head,-,sizeof head);
cnt=;
cin>>n;
for(ll i=;i<=n;i++) cin>>value[i];
ll m,x,y;
cin>>m;
for(ll i=;i<=m;i++){
cin>>x>>y;
add(x,y,(value[y]-value[x])*(value[y]-value[x])*(value[y]-value[x]));
}
spfa();
ll problem;
cin>>problem;
ll time=;
printf("Case %d:\n",time1++);
while(problem--){
ll q;
cin>>q;
if(cir[q]||dis[q]<||dis[q]==INF){
cout<<"?"<<endl;
}
else{
cout<<dis[q]<<endl;
}
}
}
int main(){
ll t;
cin>>t;
while(t--) solve();
return ;
}

Extended Traffic LightOJ - 1074 (经典SPFA问题)的更多相关文章

  1. Extended Traffic LightOJ - 1074 spfa判断负环

    //判断负环 在负环内的城市输出? #include <iostream> #include <queue> #include <cstdio> #include ...

  2. Extended Traffic LightOJ - 1074

    题目链接:https://vjudge.net/problem/LightOJ-1074 思路:(busyness of destination - busyness of source)3 可能会是 ...

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

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

  4. lightoj 1074【spfa判负环】

    题意: 给你一幅图,dis(u->v)的权值就是(w[v]-w[u])*(w[v]-w[u])*(w[v]-w[u]),所以有可能是负的,给你n个询问,给出最短路,长度<3或者不可达输出& ...

  5. LightOJ 1074 - Extended Traffic (SPFA)

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

  6. Light OJ 1074:Extended Traffic(spfa判负环)

    Extended Traffic 题目链接:https://vjudge.net/problem/LightOJ-1074 Description: Dhaka city is getting cro ...

  7. lightoj 1074 spfa判断负环

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

  8. LightOJ 1074 - Extended Traffic 【SPFA】(经典)

    <题目链接> 题目大意:有n个城市,每一个城市有一个拥挤度Ai,从一个城市I到另一个城市J的时间为:(A(v)-A(u))^3.问从第一个城市到达第k个城市所花的时间,如果不能到达,或者时 ...

  9. LightOj 1074 Extended Traffic (spfa+负权环)

    题目链接: http://lightoj.com/volume_showproblem.php?problem=1074 题目大意: 有一个大城市有n个十字交叉口,有m条路,城市十分拥挤,因此每一个路 ...

随机推荐

  1. SQL数据库-基本操作

    SQL教程 整理自:廖雪峰的官方网站-SQL教程 目录 SQL教程 SQL快捷键 1.概述 数据类型 SQL操作数据库的能力 语法特点 2. 安装MySQL 运行MySQL 3. 关系模型 3.1 概 ...

  2. 自定义实现 PyQt5 下拉复选框 ComboCheckBox

    一.前言 由于最近的项目需要具有复选功能,但过多的复选框会影响界面布局和美观,因而想到把 PyQt5 的下拉列表和复选框结合起来,但在 PyQt5 中并没有这样的组件供我们使用,所以想要自己实现一个下 ...

  3. webpack打包es6代码

    1.简单描述一下es6的模块导入和导出的语法: //导出:export var aa = 10;export function demo(){} //不能写成:var aa = 10;export a ...

  4. 如何在Linux系统上安装nginx

      安装Nginx 下载Nginx 到官网http://nginx.org/下载对应nginx包,推荐使用稳定版本进入官网之后界面如下 点击download进行到下一页 然后下载所需要的版本(强烈建议 ...

  5. Hive架构原理

    什么是Hive Hive是由Facebook开源用于解决海量结构化日志的数据统计:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射 成一张表,并提供类SQL查询功能,底层计算引 ...

  6. 使用VS开始一个新项目配置外部库的新手总结

    在使用VS做一个项目的时候,往往会需要使用各种各样的库,一般一个标准的外部库目录大体结构为: VS在配置这些库的时候有多种可行方法,但是不同的方法对于项目后续的管理和移植有不同的影响,我使用过以下三种 ...

  7. 阿里开源首个移动AI项目,淘宝同款推理引擎

    淘宝上用的移动AI技术,你也可以用在自己的产品中了. 刚刚,阿里巴巴宣布,开源自家轻量级的深度神经网络推理引擎MNN(Mobile Neural Network),用于在智能手机.IoT设备等端侧加载 ...

  8. Jmeter4.0接口测试之WebServices(四)

    关于什么是web services,可以到W3C中查看详细的信息,本文章主要介绍使用Jmeter怎么来做web services的接口测试,首先它也是基于HTTP协议的,我们实现电话号码归属地的查询, ...

  9. 以个人身份加入.NET基金会

    .NET 走向开源,MIT许可协议. 微软为了推动.NET开源社区的发展,2014年联合社区成立了.NET基金会. 一年前 .NET 基金会完成第一次全面改选,2014年 .NET基金会的创始成员中有 ...

  10. Linux中的基础

    前言: 这里介绍Linux基础管理.主要包括.Linux中的帮助命令(man.help).系统基础(开机.关机.重启) 一.Linux中的帮助命令. 1.内部命令: #help 命令名 例如:help ...