zoukankan      html  css  js  c++  java
  • POJ 1797 Heavy Transportation

    题意:n个城市m条路、求从1城市到n城市的最大承载量,现在给出一些城市之间的最大承载量    解释一下:比如说你有3个城市两条路 分别是1到2权值是3,2到3权值是5,那么你从1到3的最大承载量就是3,如果是5的话你从1到2就不行,超重了

    思路:转化为求最短路径问题、那么具体怎么实现呢

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 const int qq=1005;
     5 const int MAX=1e9; 
     6 int map[qq][qq];
     7 int dis[qq];
     8 int vis[qq]; 
     9 int n,m;
    10 void prim()
    11 {
    12     memset(vis,0,sizeof(vis));
    13     for(int i=1;i<=n;++i)
    14         dis[i]=map[1][i];
    15     vis[1]=1;
    16     int k;
    17     for(int i=1;i<=n;++i){
    18         int maxn=0;
    19         for(int j=1;j<=n;++j)
    20             if(!vis[j] && maxn<dis[j])    //因为是求最大承载量、那么 
    21                 maxn=dis[k=j];        //在所有可到达的城市中选一个承载量最大的出来、 
    22         vis[k]=1;
    23     //    printf("%d
    ",k);
    24         if(k==n)    return;
    25         for(int j=1;j<=n;++j)
    26             if(!vis[j]){                                        //因为你要满足所有的经过的所有城市都不能超重 
    27                 int ans=dis[k]<map[k][j]?dis[k]:map[k][j];        //所以得选取两者中较小的一个、 
    28                                                                     //map[k][j]代表城市k与城市j建立联系、 
    29                 if(dis[j]<ans && map[k][j]!=0)
    30                     dis[j]=ans;
    31             }
    32     }
    33 }
    34 int main()
    35 {
    36     int t;scanf("%d",&t);
    37     int k=0;
    38     while(t--){
    39         scanf("%d%d",&n,&m);
    40         int x,y,z;
    41         for(int i=1;i<=n;++i)
    42             for(int j=1;j<=n;++j)
    43                 map[i][j]=0;
    44         for(int i=0;i<m;++i){
    45             scanf("%d%d%d",&x,&y,&z);
    46                 map[x][y]=map[y][x]=z;
    47         }
    48         prim();
    49         printf("Scenario #%d:
    ",++k);
    50         printf("%d
    
    ",dis[n]);
    51     }
    52     return 0;
    53 }

    在更新dis数组时一定要明白当更新数组时取得一定是取得两种之间的最小值、

    一点生活的常识把、

    另外吧、一种思想到手里一定要想尽办法去实现、不要想着不劳而获

    不然就什么也学习不到、

  • 相关阅读:
    Alert弹出框处理
    python自动化测试
    is_selected()检查是否选中该元素
    is_enabled()检查元素是否可以编辑 如文本框
    is_displayed()检查元素是否可见
    text获取元素的文本
    back()是返回,也就是说,先加载地址到A页面,再打开页面到B页面,调用 back()方法,就返回到了A页面
    pyinstaller实现将python程序打包成exe文件
    读写excel文档
    操控MySQL数据库
  • 原文地址:https://www.cnblogs.com/sasuke-/p/5458093.html
Copyright © 2011-2022 走看看