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 ...
随机推荐
- struts2 上传下载文件,异常处理,数据类型转换
一,web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=" ...
- PoPo数据可视化周刊第6期
PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) 本期可视化精彩视频请关注公众号浏览 全天智能获Pre-A ...
- Keras vs. PyTorch
We strongly recommend that you pick either Keras or PyTorch. These are powerful tools that are enjoy ...
- url override and HttpSession implements session
背景 HttpSession默认使用Cookie存储Session ID,如果在用户禁用浏览器Cookie的功能后,仍打算运用HttpSession来进行会话管理,那么可以搭配URL重写来实现. 实现 ...
- textarea高度跟随文字高度而变化
html部分: <textarea id="textarea">哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽</textarea> js部分: < ...
- 【转】SSL协议详解
作者:朱祁林 出处:http://zhuqil.cnblogs.com 原文链接 背景介绍 最近在看<密码学与网络安全>相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL. ...
- tomcat报错相关问题
action1:tomcat7w.exe里面path to executable不是当前所用的tomcat(可执行文件路径是你以前使用过的tomcat路径,导致启动服务报错:找不到可执行文件) 解决办 ...
- 软工读书笔记 week 8 —— 《疯狂的程序员》
这次接着上一次的进度继续阅读,并将其中感悟较深的几点记录如下. 程序员是一个幕后工作者 书中绝影给医院写软件,而医生(用户)只是评价这个软件好不好用,而不会去评价写这个软件的程序员优不优秀. ...
- spring boot(9)-mybatis关联映射
一对多 查询type表的某一条数据,并且要同时查出所有typeid与之配置的user,最终要得到一个以下类型的Type对象 public class Type { String id; String ...
- Spring 集成 Ehcache 开启缓存
1.jar包 1.1.slf4j-api-1.6.1.jar 1.2.ehcache-2.7.0.jar 1.3.spring-core-3.2.0.RELEASE.jar 1.4.spring-co ...