【最短路】FOJ 2243 Daxia like uber
题目链接:
http://acm.fzu.edu.cn/problem.php?pid=2243
题目大意:
给一张N个点M条边的有向图,从s出发,把在x1的人送到y1,在x2的人送到y2用的最短距离。
题目思路:
【最短路】
首先就两个乘客需要送,手写可以得到6种先后次序。
s>x1>x2>y1>y2;
s>x1>y1>x2>y2;
s>x1>x2>y2>y1;
第一个和第二个对调可得剩下三种情况。
所以可以对s,x1,x2,y1,y2求5次单源最短路,最后累加求和取最小。
//
//by coolxxx
//#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<map>
#include<memory.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#include<stdbool.h>
#include<math.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(a) ((a)>0?(a):(-(a)))
#define lowbit(a) (a&(-a))
#define sqr(a) ((a)*(a))
#define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
#define mem(a,b) memset(a,b,sizeof(a))
#define eps (1e-8)
#define J 10
#define mod 1000000007
#define MAX 0x7f7f7f7f
#define PI 3.14159265358979323
#define N 1004
#define M 100004
using namespace std;
typedef long long LL;
int cas,cass;
int n,m,lll,ans;
struct xxx
{
int next,to,dis;
}a[M];
int c[N][N];
int last[N],d[N],q[N];
bool u[N];
void add(int x,int y,int z)
{
a[++lll].next=last[x];
a[lll].to=y;
a[lll].dis=z;
last[x]=lll;
}
void spfa(int s)
{
mem(d,);mem(u,);
int i,l=,r=,now,to;
q[]=s;d[s]=;
while(l!=r)
{
now=q[l=(l+)%N];
u[now]=;
for(i=last[now];i;i=a[i].next)
{
to=a[i].to;
if(d[to]>d[now]+a[i].dis)
{
d[to]=d[now]+a[i].dis;
if(!u[to])
{
u[to]=;
q[r=(r+)%N]=to;
}
}
}
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1.txt","r",stdin);
// freopen("2.txt","w",stdout);
#endif
int i,j,k;
int x,y,z,s,x1,y1,x2,y2;
// for(scanf("%d",&cas);cas;cas--)
// for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
// while(~scanf("%s",s))
while(~scanf("%d",&n))
{
lll=;
mem(last,);mem(c,);
scanf("%d",&m);
scanf("%d%d%d%d%d",&s,&x1,&y1,&x2,&y2);
for(i=;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
}
spfa(s);
c[s][x1]=d[x1];c[s][x2]=d[x2];c[s][y1]=d[y1];c[s][y2]=d[y2];
spfa(x1);
c[x1][x2]=d[x2];c[x1][y1]=d[y1];c[x1][y2]=d[y2];
spfa(x2);
c[x2][x1]=d[x1];c[x2][y2]=d[y2];c[x2][y1]=d[y1];
spfa(y1);
c[y1][x2]=d[x2];c[y1][y2]=d[y2];
spfa(y2);
c[y2][y1]=d[y1];c[y2][x1]=d[x1];
ans=c[s][x1]+c[x1][x2]+c[x2][y1]+c[y1][y2];
ans=min(ans,c[s][x1]+c[x1][y1]+c[y1][x2]+c[x2][y2]);
ans=min(ans,c[s][x1]+c[x1][x2]+c[x2][y2]+c[y2][y1]);
ans=min(ans,c[s][x2]+c[x2][x1]+c[x1][y1]+c[y1][y2]);
ans=min(ans,c[s][x2]+c[x2][y2]+c[y2][x1]+c[x1][y1]);
ans=min(ans,c[s][x2]+c[x2][x1]+c[x1][y2]+c[y2][y1]);
printf("%d\n",ans);
}
return ;
}
/*
// //
*/
【最短路】FOJ 2243 Daxia like uber的更多相关文章
- FZU 2243 Daxia like uber
枚举,最短路. 求出5个点出发的最短路,然后枚举一下这些点之间走的顺序. #pragma comment(linker, "/STACK:1024000000,1024000000" ...
- 【模拟】FOJ 2244 Daxia want to buy house
题目链接: http://acm.fzu.edu.cn/problem.php?pid=2244 题目大意: 每月还款额=贷款本金×[月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1 ...
- 【数论】FOJ 2238 Daxia & Wzc's problem
题目链接: http://acm.fzu.edu.cn/problem.php?pid=2238 题目大意: 已知等差数列A(0)的首项a和公差d,求出数列A(0)前n项和,得到新数列A(1);以此类 ...
- FOJ有奖月赛-2016年8月(daxia专场之过四题方有奖)
http://acm.fzu.edu.cn/contest/list.php?cid=152 主要是a题, lucas定理, 就这一版能过.. 记录一下代码, 另外两个最短路 一个模拟,没什么记录 ...
- POJ 2243 Knight Moves(BFS)
POJ 2243 Knight Moves A friend of you is doing research on the Traveling Knight Problem (TKP) where ...
- foj 2173 floyd+矩阵快速幂
Problem 2173 Nostop Accept: 52 Submit: 210 Time Limit: 3000 mSec Memory Limit : 32768 KB Pro ...
- 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 ...
随机推荐
- 学点bootstrap
- Android Parcelable Trans byte[]
思路: http://stackoverflow.com/questions/10898116/make-custom-parcelable-containing-byte-array 谢谢, 这位外 ...
- Ojbect-C2 3、NSArray和NSMutableArray数组的使用
Adopted Protocols NSCoding encodeWithCoder: initWithCoder: NSCopying copyWithZone: NSMutableCopying ...
- UILabel的高度自适应
_content = [UILabel new]; _content.text = @"日落时分,沏上一杯山茶,听一曲意境空远的<禅>,心神随此天籁,沉溺于玄妙的幻境里.仿佛我就 ...
- Long型整数,缄默溢出
/** 长整数问题 @author husky */ public class LongDemo { public static void main(String[] args) { /** * 问题 ...
- 【BZOJ1012】【树状数组求区间最值】最大数maxnumber
Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. 2. ...
- OC 字符和日期的互转
需要用到NSDateFormatter这个类. 1.字符串转换为日期 [plain]NSDateFormatter* dateFormat = [[NSDateFormatter alloc] ini ...
- Sublime Text 皮肤插件安装
安装皮肤, 举例sodahttps://github.com/buymeasoda/soda-themectrl+shift+p => Package Control: Install Pack ...
- filter过滤器执行顺序
浏览器请求---->进入过滤器---->进入doFilter方法--->执行chain.doFilter()方法就会放行----->进入业务逻辑方法------>进入过滤 ...
- Flask 富文本编辑器
XHEditor http://segmentfault.com/blog/digwtx/1190000002439076 CKeditor http://segmentfault.com/blog/ ...