zoukankan      html  css  js  c++  java
  • POJ-3268-Silver Cow Party

    链接:https://vjudge.net/problem/POJ-3268

    题意:

    1-N个农村要在X位置举办Party。求N个农村过去个回来的最大值。

    给一个带权有向图,N个结点,M条路径。和点X。

    思路:

    第一次用Floyd算法O(N^3)超时了。

    然后用两个二维数组,记录原数组和原数组的反方向。

    例如,原数组Map1[x][1]记录的是x->1即从x回来的路程,Map2[x][1]记录的是1->x过去的路程。

    代码:

    #include <iostream>
    #include <memory.h>
    using namespace std;
    const int MAXN = 1000+10;
    const int INF = 99999999;
    int Map1[MAXN][MAXN];//回来
    int Map2[MAXN][MAXN];//过去
    int Dis1[MAXN];
    int Dis2[MAXN];
    int vis[MAXN];
    int n,m,x;
    
    void Dijkstra(int Map[MAXN][MAXN],int Dis[MAXN])
    {
        memset(vis,0, sizeof(vis));
        for (int i = 1;i <= n;i++)
            Dis[i] = Map[x][i];
        vis[x] = 1;
        for (int i = 1;i <= n;i++)
        {
            int w,small = INF;
            for (int j = 1;j <= n;j++)
            {
                if (vis[j] == 0)
                {
                    if (Dis[j] < small)
                    {
                        small = Dis[j];
                        w = j;
                    }
                }
            }
            vis[w] = 1;
            for (int j = 1;j <= n;j++)
            {
                if (vis[j] == 0)
                {
                    Dis[j] = min(Dis[j],Dis[w]+Map[w][j]);
                }
            }
        }
    }
    
    int main()
    {
        int l,r,v;
        scanf("%d%d%d",&n,&m,&x);
        for (int i = 1;i<=n;i++)
            for (int j = 1;j<=n;j++)
                if (i == j)
                    Map2[i][j] = Map1[i][j] = 0;
                else
                    Map2[i][j] = Map1[i][j] = INF;
    
        for (int i = 0;i < m;i++)
        {
            scanf("%d%d%d",&l,&r,&v);
            Map1[l][r] = v;
            Map2[r][l] = v;
        }
        int sum = 0;
        Dijkstra(Map1,Dis1);
        Dijkstra(Map2,Dis2);
        for (int i = 1;i<=n;i++)
            sum = max(sum,Dis1[i]+Dis2[i]);
    
        printf("%d
    ",sum);
    
    
        return 0;
    }
    

      

  • 相关阅读:
    SDWebImage 3.7.5简介
    GCD
    使用NS_ENUM 或者 NS_OPTIONS代替enum
    深浅拷贝
    @property相关问题
    runtime相关问题
    命令行工具命令
    【Android纳米学位】project 0
    Android 颜色大全 (colors.xml )
    AndroidStudio push代码到github
  • 原文地址:https://www.cnblogs.com/YDDDD/p/10273839.html
Copyright © 2011-2022 走看看