题目大意:每一个城市都有一定的繁荣度,然后给出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. vue 2

    目录 复习 今日 指令 条件指令 循环指令 评论案例 解决插值表达式符号冲突 总结 组件 局部组件 全局组件 组件间的交互:父传子 组件间的交互:子传父 复习 """ 1 ...

  2. Selenium系列(五) - 键盘操作详细解读

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

  3. [Linux系统] CentOS7(RHEL7)重置root用户密码

    1.系统启动时,按"e"进入编辑界面 2.编辑内容 将rhgb quiet修改为 init=/bin/sh : 然后按 ctrl+x . 3.修改root密码 mount -o r ...

  4. [dp]牛牛与数组

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 牛牛喜欢这样的数组: 1:长度为n 2:每一个 ...

  5. SpringBoot项目中应用Jedis和一些常见配置

    优雅的使用Jedis Redis的Java客户端有很多,Jedis是其中使用比较广泛和性能比较稳定的一个.并且其API和RedisAPI命名风格类似,推荐大家使用 在项目中引入Jedis 可以通过Ma ...

  6. IO多路复用(IO Multiplexing)

    什么是IO多路复用 为什么要有IO多路复用 作者总结 遵循学习新知识的三部曲:是什么?为什么?怎么用? 作者前言:IO多路复用本质上是网络通信过程中的一个技术名词. 什么是IO多路复用 一个用机场管理 ...

  7. Attention-based Extraction of Structured Information from Street View Imagery:基于注意力的街景图像提取结构化信息

    基于注意力的街景图像提取结构化信息 一种用于真实图像文本提取问题的TensorFlow模型. 该文件夹包含在FSNS数据集数据集上训练新的注意OCR模型所需的代码,以在法国转录街道名称. 您还可以使用 ...

  8. 学习Angular1

    教程: 参考教程: https://www.runoob.com/angularjs/angularjs-tutorial.html 一.angular的简介AngularJS 是一个 JavaScr ...

  9. JavaScript 趣味题。

    第一题: const Greeters = [] for (var i = 0 ; i < 10 ; i++) { Greeters.push(function () { return cons ...

  10. HDU - 3791 建立二叉搜索树

    题意: 给定一个序列,下面又有n个序列,判断这个序列和其他序列是否为同一个二叉树(同一序列数字各不相同) 思路: 首先讲将一个序列建立成二叉搜索树,然后将其他序列也建立二叉搜索树,两个树进行前序遍历, ...