zoukankan      html  css  js  c++  java
  • hdu 4034 Graph Floyd

    题意是告诉你全部一张图点与点之间的最短路,问你原图最少有几个点?

    #include<bits/stdc++.h>
    using namespace std;
    
    int mp[100+5][100+5],d[100+5][100+5];
    
    int main()
    {
        int _,n,i,j,k,p,ans;
        scanf("%d",&_);
        for(p=1; p<=_; p++)
        {
            scanf("%d",&n);
            ans=0;
            for(i=0; i<n; i++)
                for(j=0; j<n; j++)
                    scanf("%d",&mp[i][j]);
            int flag=1;
            memset(d,0,sizeof(d));
            for(i=0; i<n; i++)
            {
                for(k=0; k<n; k++)
                {
                    for(j=0; j<n; j++)
                    {
                        if(i==k||i==j||k==j) continue;
                        if(mp[i][j]==mp[i][k]+mp[k][j]&&!d[i][j])
                            ans++,d[i][j]=1;
                        if(mp[i][j]>mp[i][k]+mp[k][j])
                        {
                            flag=0;
                            break;
                        }
                    }
                    if(flag==0) break;
                }
                if(flag==0) break;
            }
    
            if(flag)
                printf("Case %d: %d
    ",p,n*(n-1)-ans);
            else
                printf("Case %d: impossible
    ",p);
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    [HNOI2008]玩具装箱TOY
    UVA1185 Big Number
    01分数规划
    [HNOI2010]弹飞绵羊
    Mobius反演的套路
    MySQL日志
    MySQL事务、锁机制、查询缓存
    MySQL的索引
    MySQL的存储引擎
    HAProxy学习笔记
  • 原文地址:https://www.cnblogs.com/xryz/p/4847834.html
Copyright © 2011-2022 走看看