zoukankan      html  css  js  c++  java
  • P1522 牛的旅行

      这题挺好……有几个坑……(反正我都跳进去了)

      对于新的更大的图,由于求的是最小连接边,所以它的值可能小于之前单独一个图的最长的最短路……

      所以之后的值应该取个max(emmm……)

      所以第一次我只拿了70。。。

      而且还有一个小问题……注意Floyd。。。(自己想)

      代码:

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    using namespace std;
    #define maxn 200
    #define inf 99999999.0
    struct node
    {
        int x,y;
    } a[maxn];
    int n;
    double dis[maxn][maxn],la[maxn],ro[maxn],ans=inf,now;
    double Dis(int i,int j)
    {
        return sqrt(pow(a[i].x-a[j].x,2)+pow(a[i].y-a[j].y,2));
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        scanf("%d%d",&a[i].x,&a[i].y);
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            int op;
            scanf("%1d",&op);
            if(i==j) continue; 
            if(op==1) dis[i][j]=Dis(i,j);
            else dis[i][j]=inf;
        }
        for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            if(dis[i][j]==inf) continue;
            la[i]=max(la[i],dis[i][j]);
            now=max(now,la[i]);
        }
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        if(dis[i][j]==inf) ans=min(ans,la[i]+la[j]+Dis(i,j));
        printf("%.6lf",max(now,ans));
        return 0;
    } 

      

  • 相关阅读:
    httpclient用法
    JS逻辑运算符&&与||的妙用
    jackson详解
    MVC +EF+linq 多表联查
    Log4net 集成到MVC+EF框架
    Asp.net中的页面跳转及post数据
    字符串的分割操作
    线程的信号机制
    事件的标准模式
    Java网络编程
  • 原文地址:https://www.cnblogs.com/popo-black-cat/p/10140849.html
Copyright © 2011-2022 走看看