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

    题意:
    思路:(虽然被放到最短路专题上但是我却想到生成树的问题)就是给出n个位置,有m条边 , 给出m条边的信息,然后求点1到点n处 中的一条路,使得运载最大(这个运载量是取的该路径中沉重最小的量)
    就是像prim构造最小生成树一样构造最大生成树

    完整代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <vector>
    const int maxn = 1e3+9;
    using namespace std;
    int n, m;
    int g[maxn][maxn];
    int cnt;
     
    void search()
    {
        int vis[maxn];
        int dist[maxn]; //用于保存街道的最大承重量
        int i, j, cur, Max;
        
        for (i = 1; i <= n; i++)
        {
            vis[i] = 0;
            dist[i] = g[1][i]; 
        }
        vis[1] = 1;
        dist[1] = 0;
        for (i = 2; i <= n; i++)
        {
            Max = -1;
            for (j = 1; j <= n; j++)
            {
                if (!vis[j] && (dist[j] > Max)) //找出路径中最大承重
                {
                    Max = dist[j];
                    cur = j;
                }
            }
            vis[cur] = 1;
            for (j = 1; j <= n; j++)
            {
                if (!vis[j])
                {    
                    int Min = min(dist[cur],g[cur][j]); //判断当前点和与之相邻街道的 求出最小的承重
                    if (dist[j] < Min) //当小于最小的承重,则进行转换
                    {
                        dist[j] = Min;
                    }
                }
            }
        }
        cnt ++;
        printf("Scenario #%d:
    ", cnt);
        printf("%d
    
    ", dist[n]);
    }
     
    int main()
    {
        int t;
        scanf("%d", &t);
        cnt = 0;
        while (t--)
        {
            int i, j;
            int a, b, c;
            scanf("%d %d", &n, &m);
            for (i = 1; i <= n; i++)
            {
                for (j = 1; j <= n; j++)
                {
                    g[i][j] = 0;  //初始化街道的承重都为零
                }
            }
            for (i = 1; i <= m; i++)
            {
                scanf("%d %d %d", &a, &b, &c);
                g[a][b] = g[b][a] = c; //一步一步往地图中添加街道的承重
            }
            search();
        }
        return 0;
    }
  • 相关阅读:
    内存碎片
    内核对象之异步IO请求完成时调用一个函数
    线程池之在内核对象触发时调用一个对象
    线程池之每隔一段时间调用一个函数
    线程池
    logging模块
    装饰器
    django 2.0 url匹配
    django models 文件夹
    转载
  • 原文地址:https://www.cnblogs.com/Tianwell/p/11283448.html
Copyright © 2011-2022 走看看