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 ...
随机推荐
- hashmap and hashtable
①继承不同. public class Hashtable extends Dictionary implements Map public class HashMap extends Abstrac ...
- 转:115个Java面试题和答案——终极列表(上)
转自:http://www.importnew.com/10980.html 本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的 ...
- UVa 10328 - Coin Toss (递推)
题意:给你一个硬币,抛掷n次,问出现连续至少k个正面向上的情况有多少种. 原题中问出现连续至少k个H的情况,很难下手.我们可以试着将问题转化一下. 设dp[i][j]表示抛掷i个硬币出现连续至多j个H ...
- EF 学习笔记
1.EFcodeFirst如何使用存储过程!public string GetCoupon(int type) { using (var db=new ProbabilityContext()) { ...
- 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解
本文主要讲的是<天龙八部>游戏中水面(TerrainLiquid)的具体实现,使用C++,Ogre1.6. 天龙的水面做的比较简单,虽然没有倒影,但动态纹理+深度图做出的效果还行,看着不是 ...
- hdoj-2019
#include "stdio.h"void sort(int number[],int n,int m);int main(){ int n,m,i,number[100]; s ...
- JSP如何在servlet将一个数据模型对象传递给jsp页面
在servlet把对象放到request里,然后jsp里直接通过request取值如 在servlet:(简写了)public void doGet(request,response){UserInf ...
- 自定义UIAlertView
You can change accessoryView to any own customContentView in a standard alert view in iOS7 [alertVie ...
- ————————————————————————————杭电ACM————————————————X-POWER————————————————————————————————
_________________________________________我要成大牛!!!___________________________________________________ ...
- HDU5441 Travel 并查集
http://acm.hdu.edu.cn/showproblem.php?pid=5441 无向图,n个点,m条带权边,q次询问,给出数值d,点a可以到点b当且仅当存在一条路线其中最大的权值不超过d ...