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 ...
随机推荐
- 后台框架--HUI 的学习跟使用1
下载跟查看说明文档:官方 https://github.com/jackying/ 官网:http://www.h-ui.net/H-ui.admin.shtml 后台,http://www.h-ui ...
- scrollView自动加载数据demo
package combaidu.mylistsrollview; import java.util.ArrayList;import java.util.List; import com.baidu ...
- [转]Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
转自:Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划 前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了Surfa ...
- iOS开发多线程篇—线程间的通信(转)
这里转载 给自己一个备份 一.简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转 ...
- hdu 2072
Ps:啊啊啊啊啊啊!WA了N次!真的是N次......终于做出来了...想哭的心情都有了... 这道题要考虑前面有N个空格,中间有N个空格,后面也有N个空格....然后就是输入空格.... 贴上代码: ...
- Ettus Research USRP B200/B210 simple case
- 玩转无线电 -- GPS Hacking (上)
0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因为内容太过学术化, 所需设备成本太高. 让许多感兴趣的朋友苦于无法入门. 直到GPS-SDR-SIM 这类 ...
- 未来WEB程序员
作为一名程序员,如果你想在这个领域内继续向前进步或者在当前的经济形势下保持不被炒鱿鱼,那么你就决不应当自满自足,你需要继续学习.近日,著名IT评论员Justin James在他的博客中列出了未来五年程 ...
- 爬虫再探之mysql简单使用
在爬取数据量比较大时,用EXCEL存取就不太方便了,这里简单介绍一下python操作mysql数据库的一些操作.本人也是借助别人的博客学习的这些,但是找不到原来博客链接了,就把自己的笔记写在这里,这里 ...
- HTML的表单
HTML表单 <!-- <form></form>标签对用来创建一个表单,即定义表单的开始和结束位置,<form>表单具有下面等属性 1.action属性用来 ...