最短路 红太狼 2022-08-04 08:28 165阅读 0赞 \[hdu 1599\] ([http://acm.hdu.edu.cn/showproblem.php?pid=1599][http_acm.hdu.edu.cn_showproblem.php_pid_1599]) 题目描述: find the mincost route Time Limit: 1000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3345 Accepted Submission(s): 1359 Problem Description 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,….VK,V1,那么必须满足K>2,就是说至除了出发点以外至少要经过2个其他不同的景区,而且不能重复经过同一个景区。现在8600需要你帮他找一条这样的路线,并且花费越少越好。 Input 第一行是2个整数N和M(N <= 100, M <= 1000),代表景区的个数和道路的条数。 接下来的M行里,每行包括3个整数a,b,c.代表a和b之间有一条通路,并且需要花费c元(c <= 100)。 Output 对于每个测试实例,如果能找到这样一条路线的话,输出花费的最小值。如果找不到的话,输出”It’s impossible.”. Sample Input 3 3 1 2 1 2 3 1 1 3 1 3 3 1 2 1 1 2 3 2 3 1 Sample Output 3 It’s impossible. Author 8600 Source HDU 2007-Spring Programming Contest - Warm Up (1) 言简意赅: 8600要去旅行,他会去>=3个景区,且去的地方不能有重复的,且最后还要回到初始点,要求其最小路径; 算法: 利用Floyd算法扩展求无向图的最小环; 注意:有向图最小环和无向图最小环是不一样的,在有向图中两个顶点就能形成最小环,而在无向图中需要三个顶点才能组成最小环。 代码实现: #include <iostream> #include <stdio.h> #define MAX 0xfffffff using namespace std; int n,m,a,b,c; int dist[110][110],map[110][110]; int min(int x,int y) { return (x<=y)? x:y; } int main() { int M=MAX/10; while(scanf("%d%d",&n,&m)!=EOF) { int ans=M; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { map[i][j]=M;//初始化为无穷大,因为自身不能成环 } } while(m--) { scanf("%d%d%d",&a,&b,&c); if(c<map[a][b]) map[a][b]=map[b][a]=c; } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { dist[i][j]=map[i][j]; } } for(int k=1; k<=n; k++)//有前k-1个点递推第k个点的情况//在最短路径外的一点将最短路径首尾相接,那么就得到一个最小环 { for(int i=1; i<k; i++) { for(int j=i+1; j<k; j++)//两个点必然是不同的 { ans=min(ans,dist[i][j]+map[k][i]+map[k][j]);//k为其中最大点,无向图三点成环,可以求得最小环 } } for(int i=1; i<=n; i++)//利用Floyd算法求任意两点的最短路,包含前k-1个点 { for(int j=1; j<=n; j++) { dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);//每次都要把最短路径进行更新 } } } if(ans==M) printf("It's impossible.\n"); else printf("%d\n",ans); } return 0; } [http_acm.hdu.edu.cn_showproblem.php_pid_1599]: http://acm.hdu.edu.cn/showproblem.php?pid=1599
相关 最短路 <table> <tbody> <tr> <td> <h2>最短路</h2> <strong>Time Limit: 5000/1000 MS (Java/O 向右看齐/ 2024年02月18日 22:54/ 0 赞/ 45 阅读
相关 最短路 \[hdu 1599\] ([http://acm.hdu.edu.cn/showproblem.php?pid=1599][http_acm.hdu.edu.cn_showp 红太狼/ 2022年08月04日 08:28/ 0 赞/ 166 阅读
相关 C--最短路 Problem Description 给出一个带权无向图,包含n个点,m条边。求出s,e的最短路。保证最短路存在。 Input 多组输入。 对于每组数据。 以你之姓@/ 2022年07月12日 08:26/ 0 赞/ 124 阅读
相关 最短路 队列+松弛操作 读取队头顶点u,并将队头顶点u出队(记得消除标记);将与点u相连的所有点v进行松弛操作,如果能更新估计值(即令d\[v\]变小),那么就更新,另外,如果 忘是亡心i/ 2022年06月11日 04:06/ 0 赞/ 205 阅读
相关 最短路 一下模板均已通过HDUOJ 2544 程序设计竞赛队空间和时间复杂度要求都很高,所以朴素的Dijkstra[算法][Link 1]无论时间还是空间,效率都很低。 所以,一般 淡淡的烟草味﹌/ 2022年06月09日 04:28/ 0 赞/ 242 阅读
相关 最短路径(Dijkstra)-HDU 2544-最短路 最短路径(Dijkstra)-HDU 2544-最短路 -------------------- 题目链接: [最短路][Link 1] 亦凉/ 2022年05月14日 03:38/ 0 赞/ 211 阅读
相关 最短路 最短路 典型用途:交通网络的问题——从甲地到乙地之间是否有公路连通?在有多条通路的情况下,哪一条路最短? 交通网络用有向网来表示:顶点——表示城市,弧——表示两个城 淡淡的烟草味﹌/ 2022年03月18日 12:35/ 0 赞/ 253 阅读
相关 最短路 Floyed [http://codevs.cn/problem/1077/][http_codevs.cn_problem_1077] include<cstdi ﹏ヽ暗。殇╰゛Y/ 2021年11月18日 00:30/ 0 赞/ 292 阅读
相关 最短路 复习下图论算法 1. 邻接表的Dijkstra ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] / 冷不防/ 2021年11月02日 14:24/ 0 赞/ 448 阅读
相关 HDU 2544 最短路 最短路 时间限制:5000/1000 MS(Java / Others)内存限制:32768/32768 K(Java /其他) 提交总数:106773接受提交内容: 桃扇骨/ 2021年10月18日 08:20/ 0 赞/ 320 阅读
还没有评论,来说两句吧...