【最短路】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 ...
随机推荐
- (转)function($){}(window.jQuery) 是什么意思?
function(){}(); (function(){})(); 这两个是self-invoking anonymous 自调匿名函数,用这类的方法,能强制使匿名函数成为表达式,把不合法变成合法. ...
- 偶遇问题 - - JavaScript 取消链接默认行为问题
今天在测试<JavaScript DOM编程艺术(第2版)>中第69页代码时,遇到了问题.本来预期效果应该是点击链接后不跳转当前页面,而是另外弹出有个窗口.但结果却是页面跳转了.代码如下图 ...
- 阿里云服务器如何安装memcached
方法/步骤 1 使用Xshell登陆阿里云服务器. 请使用root帐号登陆.下面的操作全部在home目录里执行 2 安装libevent. 输入命令 yum -y install libevent-d ...
- Android中全局搜索(QuickSearchBox)详解
http://blog.csdn.net/mayingcai1987/article/details/6268732 1. 标题: 应用程序如何全面支持搜索 2. 引言: 如果想让某个应用程序支持全局 ...
- 序列化- 使用BinaryFormatter进行序列化
可以使用属性(Attribute)将类的元素标为可序列化的(Serializable)和不可被序列化的(NonSerialized)..NET中有两个类实现了IFormatter借口的类中的Seria ...
- php验证是否为手机端还是PC
<?php $forasp = strtolower($_SERVER['HTTP_USER_AGENT']); if(strpos($forasp,'mobile')==true) { ech ...
- 把cygwin加入右键菜单
第一步:修改windows注册表 1·开始->运行(或者win键+R),输入REGEDIT,回车,打开注册表编辑器: 2·找到HKEY_CLASSES_ROOT\Directory\Backgr ...
- sublime text 几种常用插件
1.docblockr //文档注释 使用 /** +tab 在函数前就可以 2.SublimeLinter 代码校验插件,支持多种语言,这个是主插件,如果想检测特定的文件需要单独下载 3 ...
- php中的JSON中文处理
最近在PHP中要输出JSON,上网查了一下,对中文支持不太好,要不就先转成utf-8的编码,再用json_encode生成,客户端还要再utf-8转中文.对于网页已经用GB2312的服务器,不想这样折 ...
- centos6.2下搭建Web服务器
1.安装Apache2 yum install httpd 2.启动 方法一:service httpd start 方法二:/etc/init.d/httpd start //浏览http://ip ...