zoukankan      html  css  js  c++  java
  • fzu 2173 floyd+矩阵快速幂

    #include<stdio.h>
    #define inf 1000000000000000
    #define N 100
    long long tmp[N][N],ma[N][N];
    int n;
    long long min(long long a,long long b)
    {
        return a<b?a:b;
    }
    void floy(long long  a[N][N])
    {
        int i,j,k;
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                tmp[i][j]=inf;
          for(k=1;k<=n;k++)
            for(i=1;i<=n;i++)
              for(j=1;j<=n;j++)
                tmp[i][j]=min(tmp[i][j],a[i][k]+ma[k][j]);
          for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
              a[i][j]=tmp[i][j];
    }
    void f(int k,long long dis[N][N])
    {
        k--;
        while(k)
        {
            if(k&1)
                floy(dis);
            floy(ma);
            k=k/2;
        }
    }
    int main()
    {
        int t,m,k,i,j,u,v;
        long long cost;
        long long dis[N][N];
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d%d",&n,&m,&k);
            for(i=1;i<=n;i++)
                for(j=1;j<=n;j++)
               {
                    ma[i][j]=inf; dis[i][j]=inf;
                }
            for(i=1;i<=m;i++)
            {
                scanf("%d%d%I64d",&u,&v,&cost);
                if(ma[u][v]>cost){  ma[u][v]=cost;
                dis[u][v]=ma[u][v];
                }
            }
            f(k,dis);
            if(dis[1][n]>=inf)  printf("-1 ");
            else   printf("%I64d ",dis[1][n]);
        }
        return 0;
    }
  • 相关阅读:
    21 viewPager--- hzScrollView ----llContainer
    21 ViewPager RadioGroup
    CLEAR REFRESH FEEE的区别
    在ALV中更新数据库表
    cl_gui_cfw=>flush
    cl_gui_cfw=>dispatch
    数据库表-DD01L DD02L DD03L-保存数据表和域的消息
    SAP 锁机制
    ABAP 搜索帮助
    SAP Basis常用事务代码
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410793.html
Copyright © 2011-2022 走看看