zoukankan      html  css  js  c++  java
  • HDU1599:find the mincost route

    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.

    <pre name="code" class="cpp">#include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<queue>
    #include<algorithm>
    #define INF 0x3f3f3f//这里常设为0x3f3f3f3f 但这里是会超时的 在下面标记超时的位置  0x3f3f3f3f大概是int范围的一半 
    using namespace std;
    int n,m;
    int map[1001][1001];
    int dist[1001][1001];
    void floyd()
    {
    	int minn=INF;
    	for(int k=1;k<=n;k++)
    	{
    		for(int i=1;i<k;i++)//三点成环  ijk两两不等 
    		{
    			for(int j=i+1;j<k;j++)// 最少三点成环 
    			{
    				minn=min(minn,map[i][k]+map[k][j]+dist[j][i]);//这里的dist[j[[i]表示不经过k的j到i距离 (超时)
    			}
    		 } 
    		 for(int i=1;i<=n;i++)
    		 {
    		 	for(int j=1;j<=n;j++)
    		 	{
    		 		dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);//更新最小距离 
    			 }
    		 }
    	}
    	if(minn==INF)
    	{
    		printf("It's impossible.
    ");
    	}
    	else
    	{
    		printf("%d
    ",minn);
    	}
    }
    int main()
    {
    	while(scanf("%d%d",&n,&m)!=EOF)
    	{   
    	      for(int i=1;i<=n;i++)
    			 {
    			 	for(int j=1;j<=n;j++)
    				 {
    				 	if(i==j)
    				 	map[i][j]=dist[i][j]=0;
    				 	else
    				 	map[i][j]=map[j][i]=dist[i][j]=dist[j][i]=INF;
    				  } 
    			  }
    		 int a,b,d;
    		while(m--)
    		{
    			scanf("%d%d%d",&a,&b,&d);
    			if(map[a][b]>d)
    		    map[a][b]=map[b][a]=dist[a][b]=dist[b][a]=d;
    		}
    		floyd();
    	}
    	return 0;
    }
    

    
    
  • 相关阅读:
    视频测试序列的下载地址【转】
    RDO、SAD、SATD、λ相关概念【转】
    RGB、YUV和YCbCr介绍【转】
    H.264和HEVC分析软件和工具【转】
    Mysql——Innodb和Myisam概念与数据恢复
    ubuntu个人初始配置记录
    H.264学习笔记6——指数哥伦布编码
    H.264学习笔记5——熵编码之CAVLC
    C/C++语言学习——内存分配管理
    H.264学习笔记4——变换量化
  • 原文地址:https://www.cnblogs.com/kingjordan/p/12027028.html
Copyright © 2011-2022 走看看