zoukankan      html  css  js  c++  java
  • hdu3631 floyd

    题目的意思是给定n个顶点m条边,边允许重边,取小值;计算标记点的最短路。有两种询问方式,第一种,就是标记点,第二种就是输出两点间的最短路。

    本题是要我们了解floyd的思想,还有就是,本题会爆int。应该用__int64 或long long型;我就被坑了两次;

    #include<istream>
    using namespace std;
    const int N=309;
    const int inf=1<<30;
    int vis[N];
    __int64 dp[N][N];
    int n,m;
    void floyd(int k)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(dp[i][j]>dp[i][k]+dp[k][j])
                    dp[i][j]=dp[i][k]+dp[k][j];
            }
        }
    }
    int main()
    {
        int q,i,a,b,w,t=1;
        while(scanf("%d%d%d",&n,&m,&q),n+m+q)
        {
            if(t>1)
                printf("
    ");
            printf("Case %d:
    ",t++);
            for(i=0;i<n;i++)
            {
                dp[i][i]=0;
                vis[i]=0;
                for(int j=i+1;j<n;j++)
                    dp[i][j]=dp[j][i]=inf;
            }
            for(i=0;i<m;i++)
            {
                scanf("%d%d%d",&a,&b,&w);
                if(dp[a][b]>w)
                    dp[a][b]=w;
            }
    
            for(i=0;i<q;i++)
            {
                scanf("%d",&a);
                if(!a)
                {
                    scanf("%d",&b);
                    if(vis[b])
                        printf("ERROR! At point %d
    ",b);
                    else
                    {
                        vis[b]=1;
                        floyd(b);
                    }
                }else
                {
                    int u,v;
                    scanf("%d%d",&u,&v);
                    if(vis[u]&&vis[v])
                    {
                        if(dp[u][v]!=inf)
                            printf("%I64d
    ",dp[u][v]);
                        else
                            printf("No such path
    ");
                    }else
                    {
                        printf("ERROR! At path %d to %d
    ",u,v);
                    }
    
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    Spring Boot 是什么?
    python学习笔记
    csu oj 1344: Special Judge
    csu oj 1343 Long Long
    csu oj 1342: Double
    csu oj 1341 string and arrays
    机器学习之——认识机器学习
    CSU OJ 1340 A Sample Problem
    java logback 正则过滤
    java vm (二) 之 虚拟机启动对类的操作
  • 原文地址:https://www.cnblogs.com/BruceNoOne/p/3244134.html
Copyright © 2011-2022 走看看