程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 1125-Stockbroker Grapevine

POJ 1125-Stockbroker Grapevine

編輯:C++入門知識

 

 

題意: n個人炒股,每個人都可以給其他人報信,第 1 行 n,第x行 第一個 是 第 x-1個人可以給幾個人報信,和時間 球最少時間 和從第幾個人開始報信

 

水題,Floyd 一遍 過;

ME 676KB

TI 16MS

 

 

#include 
#include 
#include 
#include 
#include 
#include 
const int INF = 1e7;
const int N = 105;
using namespace std;
int mapp[N][N],n;
void init()
{
    for(int i = 1;i<=n;i++)
    {
        for(int j = 1;j<=n;j++)
            {
                mapp[i][j] = INF;
            }
    }
}
void Floyd()
{
    int k,j,i;
    for(k = 1;k<=n;k++)
    {
        for(i = 1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                if(mapp[i][j] > mapp[i][k] + mapp[k][j])
                    mapp[i][j] = mapp[k][j] + mapp[i][k];
            }
        }
    }
}
int main()
{
    int s,wz,ti;
    while(scanf(%d,&n),n)
    {
        init();
        for(int i = 1;i<=n;i++)
        {
            scanf(%d,&s);
            for(int j = 1;j<=s;j++)
            {
                scanf(%d%d,&wz,&ti);
                mapp[i][wz] = ti;
            }
        }
        Floyd();
        int st = -1,maxx = 0,ti = INF;
        for(int i = 1;i<=n;i++)
        {
            maxx = 0;
            for(int j = 1;j<=n;j++)
            {
                if(i==j)
                    continue;
                if(mapp[i][j]> maxx)
                {
                    maxx = mapp[i][j];
                }
            }
            if(ti>maxx)
            {
                ti = maxx;
                st = i;
            }
        }
        if(st!=-1)
            printf(%d %d
,st,ti);
            else
                puts(disjoint);
    }
    return 0;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved