• POJ 2139 Six Degrees of Cowvin Bacon(floyd)


    考完试放假有一段时间了,好久没有做题了,本来说好寒假要好好做acm,可是一星期过去了,连题目都没看。。。。isap都快写不出来了,手真的生了很多,做个题热热身。

    /* 又是牛,如果cow_i 和cow_j干同一件工作,那么cow_i和cow_j的分离度就是1,如果cow_i和cow_j分别与cow_k工作,但是cow_i和cow_j不干同样的工作,那么cow_i和cow_j的分离度就是2,也就是说这种关系是可传递的,并且一次递增,要求找出一个cow_res,他和其他的cow的分离度的和是所有其他cow的分离度和的最小值,mmin = min{dist[cow_i]},注意结果的形式int(res)才可以,看了discuss才知道,算法就明了了,就是求所有的cow_i和cow_j的距离——floyd算法。*/

    #include <iostream>
    #include 
    <cstdio>
    #include 
    <algorithm>
    #include 
    <cmath>
    #include 
    <memory.h>
    using namespace std;

    #define INF 0x7ffffff
    #define MAXN 600

    int nv,ne,m,n;
    int g[MAXN][MAXN],dist[MAXN][MAXN],index[MAXN];
    int floyd()
    {
        
    int i,j,k;
        
    for(k = 1; k <= n; ++k)
            
    for(i = 1; i <= n; ++i)
                
    for(j = 1; j <= n; ++j)
                    
    if(g[i][k]!=-1&&g[k][j]!=-1&&(g[i][j]==-1||
                                g[i][j]
    >g[i][k]+g[k][j]))
                        g[i][j] 
    = g[i][k]+g[k][j];
        
    return 0;
    }
    int main()
    {
        
    int i,k,j,h,tmp,sum;
        memset(g,
    -1,sizeof(g));
        scanf(
    "%d%d",&n,&m);
        
    for(i = 0;i < m; ++i)
        {
            scanf(
    "%d",&tmp);
            
    for(j = 0;j < tmp; ++j)
                scanf(
    "%d",&index[j]);
            
    for(j = 0;j < tmp; ++j)
                
    for( k = 0; k < j; ++k)
                    g[index[j]][index[k]] 
    = g[index[k]][index[j]] = 1;
        }
        floyd();
        memset(index,
    0,sizeof(index));
        
    int mmin = INF;
        
    for(i = 1;i <= n; ++i)
        {
            sum 
    = 0;
            
    for(j = 1; j <= n; ++j)
                
    if(i != j)
                    sum 
    += g[i][j];
            mmin 
    = sum<mmin?sum:mmin;
        }
        printf(
    "%d\n",int(mmin*100/(n-1)));
        
    return 0;
    }

  • 相关阅读:
    浅谈Java中的==和equals
    Android下基于线程池的网络访问基础框架
    浅谈Android View滑动冲突
    Android View事件分发源码分析
    浅谈Android View事件分发机制
    Android弹性滑动的三种实现方式
    浅谈Android View滑动和弹性滑动
    浅谈Android View的定位
    web Form 表单method="get" method="post" 区别
    get与post的区别
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1662744.html
Copyright © 2020-2023  润新知