zoukankan      html  css  js  c++  java
  • Silver Cow Party

    给定一个牛A,所有牛都要去牛A那里参加活动,参加完后动后返回,所有的路是单向的。
    
    
    
    ------------------------------------------------------------------------------
    #include<iostream>
    #include<cstring>
    #include<stdio.h>
    #include<math.h>
    #include<algorithm>
    using namespace std;
    const int maxn=10200;
    #define oo 1100000
    int low[maxn];
    int Map[1200][1200];
    int v[maxn];
    int ans,n;
    void dij(int x)
    {
        memset(v,0,sizeof(v));
        for(int i=1; i<=n; i++)
            low[i] = Map[x][i];
        v[x] = 1;
        for(int i=2; i<=n; i++)
        {
            int Min = oo;
            int index;
            for(int j=1; j<=n; j++)
            {
                if(!v[j]&&low[j]<Min)
                {
                    Min = low[j];
                    index = j;
                }
            }
            v[index] = 1;
            for(int j=1; j<=n; j++)
                if(!v[j]&&low[j]>Min+Map[index][j])
                    low[j] = Min + Map[index][j];
        }
    }
    int main()
    {
        int a,b,c,m,x;
        int way[maxn];
        while(~scanf("%d%d%d",&n,&m,&x))
        {
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
            {
                if(i!=j)
                Map[i][j] = oo;
                else
                    Map[i][j] = 0;
    
            }
            for(int i=1; i<=m; i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                
                   Map[a][b]  = c;
            }
            dij(x);
            for(int i=1;i<=n;i++)
                way[i] = low[i];
            
            for(int i=1;i<=n;i++)//矩阵交换
                for(int j=i+1;j<=n;j++)
            {
                int k = Map[j][i];
                Map[j][i] = Map[i][j];
                Map[i][j] = k;
            }
            dij(x);
            ans = 0;
            for(int i=1; i<=n; i++)
            {
                if(i != x)
                {
                    ans = max(ans,low[i]+way[i]);
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    03:矩形分割 (二分)
    09:膨胀的木棍 (二分+角度计算)
    A Cubic number and A Cubic Number (二分) HDU
    B
    08:不重复地输出数 (set)
    10:河中跳房子 (二分)
    07:和为给定数 (二分)
    04:网线主管 (二分)
    河中跳房子
    010:输出前k大的数
  • 原文地址:https://www.cnblogs.com/biu-biu-biu-/p/5695363.html
Copyright © 2011-2022 走看看