POJ 3268:Silver Cow Party 求单点的来回最短路径

Silver Cow Party
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 15989 Accepted: 7303

Description

One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A total of M (1 ≤ M ≤ 100,000) unidirectional (one-way roads connects pairs of farms; road irequires Ti (1 ≤ Ti ≤ 100) units of time to traverse.

Each cow must walk to the party and, when the party is over, return to her farm. Each cow is lazy and thus picks an optimal route with the shortest time. A cow's return route might be different from her original route to the party since roads are one-way.

Of all the cows, what is the longest amount of time a cow must spend walking to the party and back?

Input

Line 1: Three space-separated integers, respectively: NM, and X 
Lines 2..M+1: Line i+1 describes road i with three space-separated integers: AiBi, and Ti. The described road runs from farm Ai to farm Bi, requiring Ti time units to traverse.

Output

Line 1: One integer: the maximum of time any one cow must walk.

Sample Input

4 8 2
1 2 4
1 3 2
1 4 7
2 1 1
2 3 5
3 1 2
3 4 4
4 2 3

Sample Output

10

Hint

Cow 4 proceeds directly to the party (3 units) and returns via farms 1 and 3 (7 units), for a total of 10 time units.

求目标点到图中的其他点来回的最小值。

Dijkstra直接求来回的距离,然后比较求出最小值。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std;const int MAX = 100005;
int edge[1005][1005];
int vist[1005],vist2[1005],minidis1[1005][1005],minidis2[1005][1005];
int N,M,X;void init()
{int i,j;for(i=1;i<=N;i++){for(j=1;j<=N;j++){if(j==i){edge[i][j]=0;minidis1[i][j]=0;minidis2[i][j]=0;}else{edge[i][j]=-1;minidis1[i][j]=MAX;minidis2[i][j]=MAX;}}}for(i=1;i<=N;i++){vist[i]=0;vist2[i]=0;}
}void dijkstra(int i)
{int j,k;int position=i;int position2=i;vist[position]=1;vist2[position]=1;minidis1[i][position]=0;minidis2[position][i]=0;for(j=1;j<=N-1;j++)//一共要添加进num-1个点{for(k=1;k<=N;k++){if(vist[k]==0 && edge[position][k]!=-1 && minidis1[i][position]+edge[position][k] < minidis1[i][k])//新填入的点更新minidis{minidis1[i][k]=minidis1[i][position]+edge[position][k];}if(vist2[k]==0 && edge[k][position2]!=-1 && minidis2[position2][i]+edge[k][position2] < minidis2[k][i])//新填入的点更新minidis{minidis2[k][i]=minidis2[position2][i]+edge[k][position2];}}int min_value=MAX,min_pos=0;int min_value2=MAX,min_pos2=0;for(k=1;k<=N;k++){if(vist[k]==0 && minidis1[i][k]<min_value)//比较出最小的那一个作为新添入的店{min_value = minidis1[i][k];min_pos = k;}if(vist2[k]==0 && minidis2[k][i]<min_value2)//比较出最小的那一个作为新添入的店{min_value2 = minidis2[k][i];min_pos2 = k;}}vist[min_pos]=1;position=min_pos;vist2[min_pos2]=1;position2=min_pos2;}}int main()
{int i;cin>>N>>M>>X;init();int temp1,temp2,temp3;for(i=1;i<=M;i++){cin>>temp1>>temp2>>temp3;edge[temp1][temp2]=temp3;}memset(vist,0,sizeof(vist));memset(vist2,0,sizeof(vist2));dijkstra(X);int ans=-1;for(i=1;i<=N;i++){if(i==X)continue;ans=max(ans,minidis1[X][i]+minidis2[i][X]);}cout<<ans<<endl;return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/lightspeedsmallson/p/4928112.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文解读】Learning based fast H.264 to H.265 transcoding

时间&#xff1a; 2015 年 级别&#xff1a;APSIPA 机构&#xff1a; 上海电力大学 摘要 新提出的视频编码标准HEVC (High Efficiency video coding)以其比H.264/AVC更好的编码效率&#xff0c;被工业界和学术界广泛接受和采用。在HEVC实现了约40%的编码效率提升的同时&#…

面试必备:聊聊sql优化的15个小技巧

sql优化是一个大家都比较关注的热门话题&#xff0c;无论你在面试&#xff0c;还是工作中&#xff0c;都很有可能会遇到。如果某天你负责的某个线上接口&#xff0c;出现了性能问题&#xff0c;需要做优化。那么你首先想到的很有可能是优化sql语句&#xff0c;因为它的改造成本…

Scala程序将字符串转换为整数

In Scala, there is a huge library to support different operations on a string. One such operation is to convert string to int in Scala. 在Scala中&#xff0c;有一个庞大的库来支持对字符串的不同操作。 一种这样的操作是在Scala中将字符串转换为int。 A string can…

面试突击73:IoC 和 DI 有什么区别?

作者 | 磊哥来源 | Java面试真题解析&#xff08;ID&#xff1a;aimianshi666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;IoC 和 DI 都是 Spring 框架中的重要概念&#xff0c;就像玫瑰花与爱情一样&#xff0c;IoC 和 DI 通常情况下也是成…

MyBatis整合Spring的实现(13)

2019独角兽企业重金招聘Python工程师标准>>> 本章中分析insert元素的解析。 1 配置文件 <insert id"insert" parameterType"cn.vansky.schedule.time.menu.bo.Menu"><!--WARNING - mbggeneratedThis element is automatically generat…

python 生成对称矩阵_对称矩阵| 使用Python的线性代数

python 生成对称矩阵Prerequisites: 先决条件&#xff1a; Defining a matrix 定义矩阵 Identity matrix 身份矩阵 Transpose matrix 转置矩阵 In linear algebra, if the matrix and its transpose are equal, then the matrix is symmetric (MT M). 在线性代数中&#xff0…

麻了,代码改成多线程,竟有9大问题

很多时候&#xff0c;我们为了提升接口的性能&#xff0c;会把之前单线程同步执行的代码&#xff0c;改成多线程异步执行。比如&#xff1a;查询用户信息接口&#xff0c;需要返回用户基本信息、积分信息、成长值信息&#xff0c;而用户、积分和成长值&#xff0c;需要调用不同…

Javascript 事件冒泡处理

js中子节点和父节点有相同的事件,怎么只触发子节点的事件 方法一、在子节点触发事件里加上阻止冒泡$("p").click(function(event){ event.stopPropagation(); // do something }); 原生的类似 只是不同浏览器有些不同方法二、在父节点触发事件里加上阻止冒泡…

PHP rewinddir()函数与示例

PHP rewinddir()函数 (PHP rewinddir() function) rewinddir() function is used to rewind/reset the directory handle which is created by the opendir() function. rewinddir()函数用于后退/重置由opendir()函数创建的目录句柄。 Syntax: 句法&#xff1a; rewinddir(di…

浅聊一下线程池的10个坑

日常开发中&#xff0c;为了更好管理线程资源&#xff0c;减少创建线程和销毁线程的资源损耗&#xff0c;我们会使用线程池来执行一些异步任务。但是线程池使用不当&#xff0c;就可能会引发生产事故。今天跟大家聊聊线程池的10个坑。大家看完肯定会有帮助的~线程池默认使用无界…

Linux命令行上执行操作,不退回命令行的解决方法

问题描述&#xff1a; 如果你现在登录Centos执行了某个操作&#xff0c;但是操作一直占用命令行&#xff0c;命令行显示的也都是这个命令相关的操作&#xff0c;我想做其它事情 &#xff0c;该怎么办呢 &#xff1f; 解决方法&#xff1a; 根据《Linux命令行与Shell编程大全第2…

python 当日日期_Python程序寻找当日赢家

python 当日日期Problem statement: 问题陈述&#xff1a; There are two basketball teams (Team1 and Team2) in a school and they play some matches every day depending on their time and interest. Some days they play 3 matches, some days 2, some days 1, etc. 一…

SpringBoot 读取配置文件的 5 种方法!

作者 | 磊哥来源 | Java面试真题解析&#xff08;ID&#xff1a;aimianshi666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;Spring Boot 中读取配置文件有以下 5 种方法&#xff1a;使用 Value 读取配置文件。使用 ConfigurationProperties 读…

机器学习朴素贝叶斯算法_机器学习中的朴素贝叶斯算法

机器学习朴素贝叶斯算法朴素贝叶斯算法 (Naive Bayes Algorithm) Naive Bayes is basically used for text learning. Using this algorithm we trained machine from text. 朴素贝叶斯基本上用于文本学习。 使用此算法&#xff0c;我们从文本中训练了机器。 Let’s understan…

jQuery的ajaxFileUpload上传文件插件刷新一次才能再次调用触发change

关于用ajaxfileupload时&#xff0c;遇到一个要刷新一次页面才能再次上传&#xff0c;用live()方法来绑定 file表单 的change事件就能够解决&#xff0c;直接$("xxx").change()这样只能调用一次&#xff0c;再次调用change的时候不能触发;IE浏览器下 file表单 选择完…

使用阿里巴巴 Druid 轻松实现加密!

作者 | 磊哥来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;为什么要加密&#xff1f;现在的开发习惯&#xff0c;无论是公司的项目还是个人的项目&#xff0c;都会选择将源码上传到 Gi…

xml不显示css样式_如何使用CSS显示XML?

xml不显示css样式Introduction: 介绍&#xff1a; You must be aware of the term XML and must have dealt with these various XML files while developing a web page or website. This article focuses entirely on XML and how to display them using CSS. There are num…

Spring Boot 如何优雅的校验参数?

今天介绍一下 Spring Boot 如何优雅的整合JSR-303进行参数校验&#xff0c;说到参数校验可能都用过&#xff0c;但网上的教程大多是简单的介绍&#xff0c;所以我们今天详细看来一下 。什么是 JSR-303&#xff1f;JSR-303 是 JAVA EE 6 中的一项子规范&#xff0c;叫做 Bean Va…

ruby hash方法_Ruby中带有示例的Hash.keys方法

ruby hash方法哈希键方法 (Hash.keys Method) In this article, we will study about Hash.keys Method. The working of the method cant be assumed because of its quite a different name. Let us read its definition and understand its implementation with the help of…

c#组元(Tuple)的使用

组元(Tuple)是C# 4.0引入的一个新特性&#xff0c;可以在.NET Framework 4.0或更高版本中使用。组元使用泛型来简化类的定义&#xff0c;多用于方法的返回值。在函数需要返回多个类型的时候&#xff0c;就不必使用out , ref等关键字了&#xff0c;直接定义一个Tuple类型&#x…