Extended Traffic LightOJ - 1074 (经典SPFA问题)
题目大意:每一个城市都有一定的繁荣度,然后给出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问题)的更多相关文章
- Extended Traffic LightOJ - 1074 spfa判断负环
//判断负环 在负环内的城市输出? #include <iostream> #include <queue> #include <cstdio> #include ...
- Extended Traffic LightOJ - 1074
题目链接:https://vjudge.net/problem/LightOJ-1074 思路:(busyness of destination - busyness of source)3 可能会是 ...
- LightOJ 1074 Extended Traffic (最短路spfa+标记负环点)
Extended Traffic 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/O Description Dhaka city ...
- lightoj 1074【spfa判负环】
题意: 给你一幅图,dis(u->v)的权值就是(w[v]-w[u])*(w[v]-w[u])*(w[v]-w[u]),所以有可能是负的,给你n个询问,给出最短路,长度<3或者不可达输出& ...
- LightOJ 1074 - Extended Traffic (SPFA)
http://lightoj.com/volume_showproblem.php?problem=1074 1074 - Extended Traffic PDF (English) Stati ...
- Light OJ 1074:Extended Traffic(spfa判负环)
Extended Traffic 题目链接:https://vjudge.net/problem/LightOJ-1074 Description: Dhaka city is getting cro ...
- lightoj 1074 spfa判断负环
Extended Traffic Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Sub ...
- LightOJ 1074 - Extended Traffic 【SPFA】(经典)
<题目链接> 题目大意:有n个城市,每一个城市有一个拥挤度Ai,从一个城市I到另一个城市J的时间为:(A(v)-A(u))^3.问从第一个城市到达第k个城市所花的时间,如果不能到达,或者时 ...
- LightOj 1074 Extended Traffic (spfa+负权环)
题目链接: http://lightoj.com/volume_showproblem.php?problem=1074 题目大意: 有一个大城市有n个十字交叉口,有m条路,城市十分拥挤,因此每一个路 ...
随机推荐
- hdu1175 连连看(bfs疯狂MLE和T,遂考虑dfs+剪枝)
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1175/ 题目大意就是给出地图,上面有若干的数,相当于连连看,给了q个查询,问给出的两个位置的数能否在两次转弯以内 ...
- hdu2642二维树状数组,单点修改+区间查询
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2642/ 代码如下: #include<bits/stdc++.h> using namespace ...
- kaggle入门——泰坦尼克之灾
目录 引言 数据认识 总结 特征处理 建模预测 logistic分类模型 随机森林 SVM xgboost 模型验证 交叉验证 学习曲线 高偏差: 高方差 模型融合 总结 后记 引言 一直久闻kagg ...
- 【转载】卸载Anaconda教程
文章来源:https://docs.continuum.io/anaconda/install/uninstall/ 卸载Anaconda 要卸载Anaconda,您可以简单地删除该程序.这将留下一些 ...
- C# Threading.Timer 为什么一会儿自己停了
这两天做一个socket通信的Demo,用定时器启动client端去连接server端,出现一个状况,连接几次后定时器就停了. 下面就是会造成终止的代码: public class Client { ...
- Ubuntu下已安装Anaconda但出现conda: command not found错误解决办法
原因:环境未配置 执行[vim ~/.bashrc]命令,进入配置文件,在最后一行按'o'插入一行,并添加语句: export PATH=/home/duanyongchun/anaconda3/bi ...
- [ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?
昨天有个朋友在微信上问我一个问题:他希望通过动态脚本的形式实现对ASP.NET Core MVC应用的扩展,比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中,问我是 ...
- echarts设置图标图例legend多种形状
legend: { icon: "circle", // 字段控制形状 类型包括 circle,rect,line,roundRect,triangle,diamond ...
- 曹工说Redis源码(2)-- redis server 启动过程解析及简单c语言基础知识补充
文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...
- egg.js部署到服务器
关于egg.js项目部署服务器的问题 我使用的是腾讯云centos , 部署前需要确保服务器上安装了mysql, node . mysql下载:https://dev.mysql.com/downlo ...