hdu1599find the mincost route

2024-05-05 05:48
文章标签 route mincost hdu1599find

本文主要是介绍hdu1599find the mincost route,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目大意:

    在一个图里面找至少有三条边的无向环的最短路径。如果不存在有三条边以上的无向环则输出"It's impossible.".

解题思路:

    带环了,所以就采用floyd算法吧,因为其它几种都是适用于单源的。

    先上图;

    

       至少三条边以上,按照一般思路的话,既然是最短路径,那我们肯定是边越少越好。但是从上图就可以看出,这个观点是显然不成立的。如1--3--5--1这个环的路径就要比1--2--3--4--5--1这个环的路径要长。

       我们发现这两个环的最后两个顶点都是5---1,那么我们可不可以先将1--2--3--4给先压缩成一条边呢?当然可以啊,现在研究的不就是最短路么,就是说求1---4的最短路径,我们就用dis[1][4]表示好了。插叙一句,这个图用矩阵mp[n][n]表示,求出了1到4的最短路径,然后这个环就变成了1--4--5--1了,当然这个环的路径也就是dis[1][4]+mp[4][5]+map[5][1].

       所以我们就是要一边维护一个dis[i][j]数组,表示i到j的最短路径,一边更新一个最小值mini,在这里需要注意的是为了避免经过相同的点,应该在dis[i][j]将k加入更新之前就应该更新ans,只有这样才能完全避免点k被使用两次!

#include<stdio.h>
#define N 100
#define inf 0xfffffff
int ans;
int mp[N][N],dis[N][N];
inline int mmin(int a,int b){return a<b?a:b;
}
void initi(int n){int i,j;for(i=0;i<=n;i++)for(j=0;j<=n;j++)mp[i][j]=dis[i][j]=inf;ans=inf;
}
void floyd(int n){int i,j,k;for(k=1;k<=n;k++){for(i=1;i<k;i++)for(j=1+i;j<k;j++)ans=mmin(ans,(dis[i][j]+mp[j][k]+mp[k][i]));for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i!=j&&j!=k&&i!=k)//不能用j=i+1<k的方法,必须将dis[i][j]和dis[j][i]都更新dis[i][j]=mmin(dis[i][k]+dis[k][j],dis[i][j]);}}
}
int main()
{int i,j,n,m,temp;int a,b,c;while(scanf("%d%d",&n,&m)!=EOF){initi(n);for(i=1;i<=m;i++){scanf("%d%d%d",&a,&b,&c);if(c<mp[a][b]){mp[a][b]=mp[b][a]=dis[a][b]=dis[b][a]=c;}}floyd(n);if(ans==inf)printf("It's impossible.\n");else{printf("%d\n",ans);}}
}





这篇关于hdu1599find the mincost route的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960916

相关文章

华为---理解OSPF Route-ID(五)

9.5 理解OSPF Route-ID 9.5.1 原理概述 一些动态路由协议要求使用Router-ID作为路由器的身份标示,如果在启动这些路由协议时没有指定Router-ID,则默认使用路由器全局下的路由管理Router-ID。 Router-ID选举规则为,如果通过Router-ID命令配置了Router-ID,则按照配置结果设置。在没有配置Router-ID的情况下,如果存在配置了IP

dial tcp 10.96.0.1:443: connect: no route to host

1、创建Pod一直不成功,执行kubectl describe pod runtime-java-c8b465b98-47m82 查看报错   Warning  FailedCreatePodSandBox  2m17s                kubelet            Failed to create pod sandbox: rpc error: code = Unkno

Linux指令--route

Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table)。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址

ubuntu route

set defaut route route add -net 14.154.189.0(dest net) netmask 255.255.255.0  gw 114.119.4.1(current net)

缩窄route范围来提速本地打包的尝试

目录 为什么要缩窄route范围缩窄route的方式意外触发的重复构建重复构建的原因解决方案 为什么要缩窄route范围 对于一些大单页,单个router-view中可能包含上百个页面。但是开发的时候其实并不需要那么多调试那么多页面。 因此,为了节省不必要的打包和热更新时间,可以对route进行缩窄 缩窄route的方式 笔者这里以webpack-plugin的方式去做构建时

hdu1599 find the mincost route

find the mincost route Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1444    Accepted Submission(s): 590 Problem Description 杭州有N个景

【Linux】易错点——/etc/passwd ; /etc/shadow;ifconfig;route;chmod;ps;mv

/etc/passwd ; /etc/shadow `/etc/passwd`: 用户账户的详细信息在此文件中更新。 用户名:密码:用户 ID:群组 ID:用户 ID 信息:用户的家目录: Shell  `/etc/shadow`: 用户账户密码在此文件中更新。 ifconfig命令 作用 显示网络设备信息 启动关闭指定网卡 # ifconfig eth0 down

vue中路由的使用-通过this.$route.params来获取路由中的参数

什么是路由 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源; 对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特点:HTTP请求中不会包含hash相关的内容;所以,单页面程序中的页面跳转主要用hash实现; 在单页面应用程序中,这种通过hash改变来切换页面的方式,称作前端路由(区别于后端路由);

rocketmq No route info of this topic 问题排查

Broker配置项 autoCreateTopicEnable = true 如果是单节点(master),注释掉这里的配置 #有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制; #brokerRole = SYNC_MASTER PythonSDK是基于C++版本的封装,只报错No route info of

深入理解 Vue Router 及其 `router` 和 `route` 变量

深入理解 Vue Router 及其 router 和 route 变量 在使用 Vue.js 进行单页面应用开发时,Vue Router 是一个不可或缺的工具。它使得我们可以轻松地管理应用中的路由,提供了流畅的用户体验。然而,在实际开发中,许多开发者可能会混淆 router 和 route 这两个变量。本文将介绍 Vue Router 的基础知识,并详细探讨 router 和 route 变量