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_邻接矩阵)的更多相关文章

  1. HDU2544(dijkstra_邻接矩阵最水的题没有之一)

    https://cn.vjudge.net/problem/HDU-2544 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场 ...

  2. POJ-3268 Silver Cow Party---正向+反向Dijkstra

    题目链接: https://vjudge.net/problem/POJ-3268 题目大意: 有编号为1-N的牛,它们之间存在一些单向的路径.给定一头牛的编号X,其他牛要去拜访它并且拜访完之后要返回 ...

  3. poj-3268最短路

    title: poj-3268最短路 date: 2018-10-13 15:54:34 tags: acm 刷题 categories: ACM-最短路 概述 这是一道最短路的模板题,,,不过虽然是 ...

  4. 邻接矩阵的深度优先遍历(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 ...

  5. 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1

    import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...

  6. 邻接矩阵有向图(三)之 Java详解

    前面分别介绍了邻接矩阵有向图的C和C++实现,本文通过Java实现邻接矩阵有向图. 目录 1. 邻接矩阵有向图的介绍 2. 邻接矩阵有向图的代码说明 3. 邻接矩阵有向图的完整源码 转载请注明出处:h ...

  7. 邻接矩阵有向图(二)之 C++详解

    本章是通过C++实现邻接矩阵有向图. 目录 1. 邻接矩阵有向图的介绍 2. 邻接矩阵有向图的代码说明 3. 邻接矩阵有向图的完整源码 转载请注明出处:http://www.cnblogs.com/s ...

  8. 邻接矩阵有向图(一)之 C语言详解

    本章介绍邻接矩阵有向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...

  9. 邻接矩阵无向图(三)之 Java详解

    前面分别介绍了邻接矩阵无向图的C和C++实现,本文通过Java实现邻接矩阵无向图. 目录 1. 邻接矩阵无向图的介绍 2. 邻接矩阵无向图的代码说明 3. 邻接矩阵无向图的完整源码 转载请注明出处:h ...

随机推荐

  1. python中新式类和经典类

    python中的类分为新式类和经典类,具体有什么区别呢?简单的说, 1.新式类都从object继承,经典类不需要. Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Pyth ...

  2. 【代码笔记】iOS-自动成表格的效果

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> #import "LabelOnBackImag ...

  3. [微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息

    因为需要在小程序加个定位并加载对应城市信息 然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利 ...

  4. CSS选择器之伪类选择器(伪元素)

    selection [CSS4]应用于文档中被用户高亮的部分(比如使用鼠标或其他选择设备选中的部分).(IE8及以下不支持)(火狐-moz-selection) first-line 选择每个 < ...

  5. FineReport中如何用JavaScript自定义地图标签

    在日常使用地图过程中,通常会遇到地图标签,提示点等显示不满足我们的需求,需要进行JavaScript代码编写. 例如:在使用地图过程中,会发现很多地名显示的位置偏离.这时候就需要使用JavaScrip ...

  6. CSS 几款比较常用的翻转特效

    第一个:360度翻转特效 <style>* { margin:0; padding:0; } .aa { width: 220px; height: 220px; margin: 0 au ...

  7. Oracle存储过程简单实例

    转自 http://www.cnblogs.com/nicholas_f/articles/1526029.html /*不带任何参数存储过程(输出系统日期)*/create or replace p ...

  8. 八、Web移动端Fixed布局的解决方案

    移动端业务开发,iOS 下经常会有 fixed 元素和输入框(input 元素)同时存在的情况. 但是 fixed 元素在有软键盘唤起的情况下,会出现许多莫名其妙的问题. 这篇文章里就提供一个简单的有 ...

  9. maven(19)-生命周期和内置插件

    生命周期和依赖一样,是maven中最重要的核心概念.平时在使用maven时并不一定需要知道生命周期,但是只有明白了生命周期,才能真正理解很多重要的命令和插件配置. default生命周期 defaul ...

  10. mysql执行计划常用说明

    MYSQL执行计划顺序原则上是:在所有组中,id值越大,优先级越高,越先执行,id如果相同,可以认为是一组,从上往下顺序执行做执行计划之前,要了解下表统计信息情况:mysql.innodb_table ...