POJ3268(Dijkstra_邻接矩阵)
https://vjudge.net/problem/POJ-3268
题目大意:
n个农场的n头奶牛将前往x农场,要选择一条来回时间最短的路径。
(一头牛的返回路线可能不同于她最初去派对的路线,因为道路是单向的。)
思路:
//有向图的迪杰斯特拉
如果以每头牛为起点遍历其到x的最短路,耗时太大。
有没有简便的方法呢?
如果,以x为起点,找到其余点的最短路,这求出的便是牛返回各自农场的最短路,
由于还要求牛前往x农场的最短路,
我们可以想到一个巧妙的方法:将所有的方向反向,再求一遍以x为起点,找到其余点的最短路。
所以就是在最短路的代码上加一个反向最短路。
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#define maxn 1005
#define inf 0x3f3f3f3f
using namespace std;
int cost[maxn][maxn],n,m,x;
int disback[maxn],discome[maxn];
bool vis[maxn];
int dij(int x)
{
int u,minn;
for(int i=;i<=n;i++)
{
disback[i]=cost[x][i];
discome[i]=cost[i][x];//将各边反转
}
for(int i=;i<n;i++)
{
u=-,minn=inf;
for(int j=;j<=n;j++)
{
if(!vis[j]&&disback[j]<minn)
{
u=j;
minn=disback[j];
}
}
//if(u=-1)return
vis[u]=;
for(int v=;v<=n;v++)
{
if(!vis[v]&&cost[u][v]!=inf)
{
if(disback[u]+cost[u][v]<disback[v])
disback[v]=disback[u]+cost[u][v];
}
}
}
memset(vis,,sizeof vis);
for(int i=;i<n;i++)
{
minn=inf,u=-;
for(int j=;j<=n;j++)
{
if(!vis[j]&&discome[j]<minn)
{
u=j;
minn=discome[j];
}
}
vis[u]=;
for(int j=;j<=n;j++)
{
if(!vis[j]&&cost[j][u]+discome[u]<discome[j])
discome[j]=cost[j][u]+discome[u];
}
}
minn=-;
for(int i=;i<=n;i++)
minn=max(minn,discome[i]+disback[i]);
return minn;
}
int main()
{
int i,a,b,c,j;
while(~scanf("%d%d%d",&n,&m,&x))
{
for(i=;i<=n;i++)
for(j=;j<=n;j++)
{
if(i!=j)
cost[i][j]=inf;
else
cost[i][j]=;
}
for(i=;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
cost[a][b]=c;
}
printf("%d\n",dij(x));
}
return ;
}
POJ3268(Dijkstra_邻接矩阵)的更多相关文章
- HDU2544(dijkstra_邻接矩阵最水的题没有之一)
https://cn.vjudge.net/problem/HDU-2544 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场 ...
- POJ-3268 Silver Cow Party---正向+反向Dijkstra
题目链接: https://vjudge.net/problem/POJ-3268 题目大意: 有编号为1-N的牛,它们之间存在一些单向的路径.给定一头牛的编号X,其他牛要去拜访它并且拜访完之后要返回 ...
- poj-3268最短路
title: poj-3268最短路 date: 2018-10-13 15:54:34 tags: acm 刷题 categories: ACM-最短路 概述 这是一道最短路的模板题,,,不过虽然是 ...
- 邻接矩阵的深度优先遍历(java版)
这是一个有向边带权的图 顶点数组:[v0, v1, v2, v3, v4] 边数组: v0 v1 v2 v3 v4 v0 6 v1 9 3 v2 2 5 v3 1 v4 package com.dat ...
- 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1
import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...
- 邻接矩阵有向图(三)之 Java详解
前面分别介绍了邻接矩阵有向图的C和C++实现,本文通过Java实现邻接矩阵有向图. 目录 1. 邻接矩阵有向图的介绍 2. 邻接矩阵有向图的代码说明 3. 邻接矩阵有向图的完整源码 转载请注明出处:h ...
- 邻接矩阵有向图(二)之 C++详解
本章是通过C++实现邻接矩阵有向图. 目录 1. 邻接矩阵有向图的介绍 2. 邻接矩阵有向图的代码说明 3. 邻接矩阵有向图的完整源码 转载请注明出处:http://www.cnblogs.com/s ...
- 邻接矩阵有向图(一)之 C语言详解
本章介绍邻接矩阵有向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...
- 邻接矩阵无向图(三)之 Java详解
前面分别介绍了邻接矩阵无向图的C和C++实现,本文通过Java实现邻接矩阵无向图. 目录 1. 邻接矩阵无向图的介绍 2. 邻接矩阵无向图的代码说明 3. 邻接矩阵无向图的完整源码 转载请注明出处:h ...
随机推荐
- Docker for Windows(五)实践搭建SqlServer服务&执行数据库操作
上一篇我们已经搭建了一个mysql数据库服务了:Docker for Windows(四)实践搭建&删除MySQL服务,发现用Docker确实是方便且容易,但上一篇主要是服务的搭建删除等基础操 ...
- 在已配置成功的opencv3.2.0下配置opencv_contrib模块
简介: 之前在Ubuntu下配置OpenCV时,因为对opencv3..0不是特别了解,没有把opencv_contrib进行安装,这里提醒大家尽量要一次性安装完毕,减少不必要的麻烦. .0文件夹 ( ...
- android--Git上克隆项目遇到的坑
直接上图,首先你得有你得GitHub项目地址,如下: 然后打开android studio,选择新建项目时从Git上克隆: 点击clone等待完成,新窗口打开. 打开之后可能.或许.大概.也许会出现下 ...
- linux 文件搜索命令locate及updatedb
windows 搜索工具Everything是根据NTFS日志来搜索的,所以速度特别快 locate 类似于windows的Everything,搜索速度比较快 如果没有locate命令,可安装 yu ...
- Swiper-轮播图。
Swiper(Swiper master)是目前应用较广泛的移动端网页触摸内容滑动js插件,可以用来做轮播和滑动. 初始化 <!DOCTYPE html> <html> < ...
- 2.Spring——maven依赖
1.spring-core 2.spring-context 3.spring-orm 4.spring-web spring-webmvc others pmo demo1 pmo demo2 1. ...
- inline-flex值的含义
css中, flex设置在container中,默认情况下占用全部空间,但是如果使用inline-flex值,则container具有inline-block元素的某种特点,只占用需要的宽度
- springMVC入门-09
这一节介绍SpringMVC对文件上传的支持,该功能支持需要使用到两个jar包:cmmons-fileupload-1.2.2.jar和commons-io-2.1.jar. 在controller类 ...
- 关于Vue中:key="index"的console警告
在写vue项目时,浏览器的console出现如下警告信息: [Vue warn]: Property or method "index" is not defined on the ...
- Gerrit安装配置
环境: CentOS 1611 + gerrit-2.11.4 (review.openstack.org) 1. 安装java1.8 (>1.7) [root@review ~]# yum i ...