hdu 1599find the mincost route(Floyd算法,最小环无向图)

find the mincost route

Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 2995    Accepted Submission(s): 1204

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)

题目要求形成一个环,所以对Floyd算法有一些改进。可以参考这里的解释:http://blog.sina.com.cn/s/blog_476a25110100mag6.html

#include<stdio.h>

#include<string.h>

int n,m,mat[105][105],dis[105][105];

int main()

{

int a,b,c,i,j,k;

while(scanf("%d%d",&n,&m)!=EOF)

{

for(i=0;i<105;i++)

for(j=0;j<105;j++)

{mat[i][j]=99999999;

dis[i][j]=99999999;

}

for(int i=0;i<m;i++)

{

scanf("%d%d%d",&a,&b,&c);

if(mat[a][b]>c)

mat[a][b]=mat[b][a]=dis[b][a]=dis[a][b]=c;

}

int i,k,j,temp=99999999;

for(k=1;k<=n;k++)

{

for(i=1;i<k;i++)

for(j=1;j<i;j++)

{

if(temp>dis[i][j]+mat[i][k]+mat[k][j])

temp=dis[i][j]+mat[i][k]+mat[k][j];   //相当于在第k次时候,找到了一个最短路径的环。

}

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

if(dis[i][j]>dis[i][k]+dis[k][j])    //对最短路进行更新

dis[i][j]=dis[i][k]+dis[k][j];

}

if(temp<99999999)

printf("%d\n",temp);

else printf("It‘s impossible.\n");

}

return 0;

}

时间: 2024-08-24 04:15:48

hdu 1599find the mincost route(Floyd算法,最小环无向图)的相关文章

HDU - 1599 find the mincost route(Floyd求最小环)

find the mincost route Time Limit: 2000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status Description 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K>2,就是说至除了出发点以外至少要经过2个其他不同的景区,而且不能重复经过同一个

hdu1599 find the mincost route floyd求出最小权值的环

find the mincost route Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3456    Accepted Submission(s): 1409 Problem Description 杭 州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为

HD1599 find the mincost route(floyd + 最小环)

题目链接 题意:求最小环 第一反应时floyd判断,但是涉及到最少3个点,然后就不会了,又想的是 双联通分量,这个不知道为什么不对. Floyd 判断 最小环 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 const int INF = 0x3f3f3f3f; 7 const int

hdu 1874 畅通工程续(Floyd算法)

题目链接:hdu-1874 畅通工程续 畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 37414 Accepted Submission(s): 13812 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择

ACM: HDU 5418 Victor and World - Floyd算法+dp状态压缩

HDU 5418 Victor and World Time Limit:2000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u After trying hard for many years, Victor has finally received a pilot license. To have a celebration, he intends to buy himself an airplane and fl

HDU 2544 最短路(Floyd算法)

分析:最短路模板题,没有相关的路径求解 1 #include"iostream" 2 #define INF 65535 3 using namespace std; 4 const int maxn=100+10; 5 int w[maxn][maxn],d[maxn][maxn],n,m; 6 void Floyd() 7 { 8 for(int i=1;i<=n;i++) 9 for(int j=1;j<=n;j++) 10 d[i][j]=w[i][j]; 11 f

hdu 1599 find the mincost route (最小环与floyd算法)

题目链接: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): 2530    Accepted Submission(s): 1006 Problem Description 杭州有N个景区,景区之间有一

HDU 1599 find the mincost route (Floyd求最小环) &gt;&gt;

Problem Description 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K>2,就是说至除了出发点以外至少要经过2个其他不同的景区,而且不能重复经过同一个景区.现在8600需要你帮他找一条这样的路线,并且花费越少越好. Input 第一行是2个整数N和M(N <= 100, M <= 1000),代表景区的个数和道路的条数. 接下来的M行里,每行包括

hdu 1599 find the mincost route(无向图的最小环:求从一个点遍历所有节点以后回到原点的最短路径)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: find the mincost route Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2801    Accepted Submission(s): 1