lightoj1074 最短路
题意:有n个城市,每个城市有拥挤值,有一些单向道路,从某个城市到另一个城市的花费是拥挤值差的三次方,当然可能是负的值。问从1点到某点最少的花费,若小于3或不能到达输出“?”
建图的边权是拥挤值差的三次方,跑一遍最短路然后按照询问输出就可以了。
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std; int head[],point[],val[],next[],size;
int dist[],l[],t,s[],n;
bool vis[],cir[]; void add(int a,int b,int v){
point[size]=b;
val[size]=v;
next[size]=head[a];
head[a]=size++;
} void spfa(){
int i;
memset(dist,-,sizeof(dist));
memset(vis,,sizeof(vis));
memset(s,,sizeof(s));
memset(cir,,sizeof(cir));
dist[]=;
queue<int>q;
q.push();
vis[]=;
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=;
if(s[u]>n){
cir[u]=;
continue;
}
for(i=head[u];~i;i=next[i]){
int j=point[i];
if((dist[j]==-||dist[j]>dist[u]+val[i])&&!cir[j]){
dist[j]=dist[u]+val[i];
if(!vis[j]){
q.push(j);
vis[j]=;
s[j]++;
}
}
}
}
int m;
scanf("%d",&m);
for(i=;i<=m;i++){
scanf("%d",&t);
if(!cir[t]&&dist[t]>=)printf("%d\n",dist[t]);
else printf("?\n");
}
} int main(){
int T;
while(scanf("%d",&T)!=EOF){
for(int q=;q<=T;q++){
scanf("%d",&n);
int i;
for(i=;i<=n;i++){
scanf("%d",&l[i]);
}
memset(head,-,sizeof(head));
size=;
int m;
scanf("%d",&m);
for(i=;i<=m;i++){
int a,b;
scanf("%d%d",&a,&b);
int v=l[b]-l[a];
v=v*v*v;
add(a,b,v);
}
printf("Case %d:\n",q);
spfa();
}
}
return ;
}
lightoj1074 最短路的更多相关文章
- LightOj1074 - Extended Traffic(SPFA最短路)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1074 题意:有n个城市,每个城市有一个拥堵值a[i],m条单向路u到v,从u到v所需时 ...
- LightOJ-1074 Extended Traffic 最短路问题 注意连通性
题目链接:https://cn.vjudge.net/problem/LightOJ-1074 题意 给一图 求最短路 若最短路<3或没有最短路,则输出'?' 思路 首先注意到可能存在负环,所以 ...
- LightOJ-1074(SPFA判负圈+Bellman-Ford算法)
Extended Traffic LightOJ-1074 这题因为涉及到减法和三次方,所以可能会出现负圈. 这里使用的算法叫做SPFA算法,这个可以用来判负圈和求解最短路.Bellman-Ford算 ...
- bzoj1001--最大流转最短路
http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...
- 【USACO 3.2】Sweet Butter(最短路)
题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...
- Sicily 1031: Campus (最短路)
这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ...
- 最短路(Floyd)
关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...
- bzoj1266最短路+最小割
本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...
- HDU2433 BFS最短路
Travel Time Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
随机推荐
- Non-Programmer's Tutorial for Python 3/File IO
File I/O Here is a simple example of file I/O (input/output): # Write a file with open("test.tx ...
- Python开发入门与实战2-第一个Django项目
2.第一个Django项目 上一章节我们完成了python,django和数据库等运行环境的安装,现在我们来创建第一个django project吧,迈出使用django开发应用的第一步. 2.1.创 ...
- JDBC体会
1.把mysql-connector XXXX版本导入buildpath 2.通过DriverManager 的getConnection 方法获得一个Connnection引用,方法的参数是 url ...
- android:强制关闭其他应用
强制关闭其他应用,可以使用ActivityManager,首先需要获取(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 然后可以 ...
- IOS的变量前加extern和static字段
IOS的变量前加extern和static字段 前一阵子,做项目的时候到网上找Demo,打开运行的时候发现其中变量前有关键字extern和static,所以我研究了一下子 对于extern来说可以理解 ...
- Xtreme Toolkit Pro 免费下载地址
Xtreme Toolkit Pro 是针对Windows程序员的一套先进的用户界面套包,强大的功能可使您的应用程序具有专业的.现代感的外观. Xtreme Toolkit Pro 由8个专业级的构件 ...
- Interview----最长连续乘积字串
题目描述: 给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8. 也就是说,上述数组中,3 0.5 8这3个数的乘积3*0 ...
- 数据结构 《5》----二叉搜索树 ( Binary Search Tree )
二叉树的一个重要应用就是查找. 二叉搜索树 满足如下的性质: 左子树的关键字 < 节点的关键字 < 右子树的关键字 1. Find(x) 有了上述的性质后,我们就可以像二分查找那样查找给定 ...
- Ubuntu 启动黑屏解决
要sudo apt-get install xserver...................balabala... then.... sudo gedit /boot/grub/grub.cf ...
- hdu5853 (后缀自动机)
Problem Jong Hyok and String 题目大意 给你n个字符串,有q个询问. 定义set(s)={(i,j)} 表示 s在第i个字符串中出现,且末尾位置为j. 对于一个询问,求se ...