poj——1125 Stockbroker Grapevine
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 36112   Accepted: 20033

Description

Stockbrokers are known to overreact to rumours. You have been contracted to develop a method of spreading disinformation amongst the stockbrokers to give your employer the tactical edge in the stock market. For maximum effect, you have to spread the rumours in the fastest possible way.

Unfortunately for you, stockbrokers only trust information coming from their "Trusted sources" This means you have to take into account the structure of their contacts when starting a rumour. It takes a certain amount of time for a specific stockbroker to pass the rumour on to each of his colleagues. Your task will be to write a program that tells you which stockbroker to choose as your starting point for the rumour, as well as the time it will take for the rumour to spread throughout the stockbroker community. This duration is measured as the time needed for the last person to receive the information.

Input

Your program will input data for different sets of stockbrokers. Each set starts with a line with the number of stockbrokers. Following this is a line for each stockbroker which contains the number of people who they have contact with, who these people are, and the time taken for them to pass the message to each person. The format of each stockbroker line is as follows: The line starts with the number of contacts (n), followed by n pairs of integers, one pair for each contact. Each pair lists first a number referring to the contact (e.g. a '1' means person number one in the set), followed by the time in minutes taken to pass a message to that person. There are no special punctuation symbols or spacing rules.

Each person is numbered 1 through to the number of stockbrokers. The time taken to pass the message on will be between 1 and 10 minutes (inclusive), and the number of contacts will range between 0 and one less than the number of stockbrokers. The number of stockbrokers will range from 1 to 100. The input is terminated by a set of stockbrokers containing 0 (zero) people.

Output

For each set of data, your program must output a single line containing the person who results in the fastest message transmission, and how long before the last person will receive any given message after you give it to this person, measured in integer minutes. 
It is possible that your program will receive a network of connections that excludes some persons, i.e. some people may be unreachable. If your program detects such a broken network, simply output the message "disjoint". Note that the time taken to pass the message from person A to person B is not necessarily the same as the time taken to pass it from B to A, if such transmission is possible at all.

Sample Input

3
2 2 4 3 5
2 1 2 3 6
2 1 2 2 2
5
3 4 4 2 8 5 3
1 5 8
4 1 6 4 10 2 7 5 2
0
2 2 5 1 5
0

Sample Output

3 2
3 10

题目翻译:

经纪人称过度的传言。你已经签约开发中传播假情报给雇主股票在股票市场上的战术优势的方法。为了达到最大的效果,你必须以最快的速度传播谣言。
不幸的是你,股票经纪人信息只信任来自他们的“可信任的来源”,这意味着你要考虑到他们的接触结构时的谣言。一个特定的股票经纪人把谣言传给他的每一个同事都需要一定的时间。你的任务是写一个程序,告诉你选择哪个股票经纪人作为你的出发点的谣言,以及时间将需要在整个股票经纪人社区传播谣言。此持续时间被测量为最后一个人接收信息所需的时间。
输入
你的程序将输入的数据不同的股票经纪人。每一组从一个股票经纪人的人数。以下是每个股票经纪人的一行,其中包括他们接触过的人,这些人是谁,以及他们把信息传递给每个人的时间。每个股票经纪人行的格式如下:该行开始与接触数(n),其次是n对整数,一对对每个接触。每对先列出一个数字,指的是联系人(如“1”指的是集合中的一个人),接着是将信息传递给那个人的分钟。没有特殊的标点符号或间距规则。
每个人的编号为1到一些股票经纪人。来传递信息的时间将是1至10分钟(含),并将0个触点数小于股票的数量之间的距离。股票的数量范围从1到100。输入是一套股票经纪人含有0(零)的人。
输出
对于每一组数据,你的程序必须输出一个包含最快消息传输结果的人的一行,以及在最后一个人收到该信息后,要多长时间才能接收到任何给定的信息。
这是可能的,您的程序将收到一个网络的连接,排除一些人,即一些人可能遥不可及。如果您的程序检测到这样一个断开的网络,只需输出消息“不相交”。请注意,从一个人到另一个人传递消息所花费的时间不一定与把它从B传给A的时间相同,如果这样的传输是完全可能的。

思路:

这道题,我们只需要先使用floyd求出任意两点间的距离。
之后,我们可以去枚举我们选取的最初传递人,然后求出他传递给所有人所需的时间,再在所有这些枚举的时间里面找到一个最小值就可以了。
 
代码:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 101
#define maxn 9999999
using namespace std;
int n,m,x,y,z,dis[N][N],tot,ans,p;
struct Edge
{
    int x,y,z;
}edge[N*N];
int read()
{
    ,f=;
    char ch=getchar();
    ')
    {
        ;
        ch=getchar();
    }
    ')
    {
        x=x*+ch-';
        ch=getchar();
    }
    return x*f;
}
void begin(int n,int m)
{
    ;i<=n;i++)
     ;j<=m;j++)
      dis[i][j]=maxn*(i!=j);
}
int main()
{
    while(n=read(),n)
    {
        tot=;
        begin(N,N);
        ;i<=n;i++)
        {
            m=read();
            ;j<=m;j++)
             {
                 x=read(),y=read();
                 dis[i][x]=y;
             }
        }
        ;k<=n;k++)
         ;i<=n;i++)
          ;j<=n;j++)
           dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
        int maxx;
        bool b=true;
        ans=maxn;
        ;i<=n;i++)
        {
            maxx=;
            ;j<=n;j++)
            {
                if(i==j) continue;
                if(maxx<dis[i][j]) maxx=dis[i][j];
            }
            if(ans>maxx) ans=maxx,p=i;
            if(maxx!=maxn) b=false;
        }
        if(b) printf("disjoint\n");
        else printf("%d %d\n",p,ans);
    }
    ;
}
 

Stockbroker Grapevine(最短路)的更多相关文章

  1. POJ1125 Stockbroker Grapevine(最短路)

    题目链接. 分析: 手感不错,1A. 直接穷举的起点, 求出不同起点到其它点最短路中最长的一条的最小值(好绕). #include <iostream> #include <cstd ...

  2. POJ 1125 Stockbroker Grapevine 最短路 难度:0

    http://poj.org/problem?id=1125 #include <iostream> #include <cstring> using namespace st ...

  3. 【POJ 1125】Stockbroker Grapevine

    id=1125">[POJ 1125]Stockbroker Grapevine 最短路 只是这题数据非常水. . 主要想大牛们试试南阳OJ同题 链接例如以下: http://acm. ...

  4. 最短路(Floyd_Warshall) POJ 1125 Stockbroker Grapevine

    题目传送门 /* 最短路:Floyd模板题 主要是两点最短的距离和起始位置 http://blog.csdn.net/y990041769/article/details/37955253 */ #i ...

  5. Stockbroker Grapevine(floyd+暴力枚举)

    Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 31264 Accepted: 171 ...

  6. POJ 1125 Stockbroker Grapevine

    Stockbroker Grapevine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33141   Accepted: ...

  7. Stockbroker Grapevine(floyd)

    Stockbroker Grapevine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 28231   Accepted: ...

  8. poj 1125 Stockbroker Grapevine dijkstra算法实现最短路径

    点击打开链接 Stockbroker Grapevine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23760   Ac ...

  9. OpenJudge/Poj 1125 Stockbroker Grapevine

    1.链接地址: http://poj.org/problem?id=1125 http://bailian.openjudge.cn/practice/1125 2.题目: Stockbroker G ...

随机推荐

  1. kafka的初认识

    学习地址: http://www.jikexueyuan.com/course/1716_3.html?ss=1 http://www.jikexueyuan.com/course/kafka/ zo ...

  2. java做http接口

    问题描述 我要对外提供一个http接口给别人调用...但是我不知道用java怎么做这个接口.请大家详细给我讲讲.从开发到如何发布到服务器.谢谢了 解决方案 如果你这个很简单的话,而且数量也很少,建议直 ...

  3. B - CD UVA - 624

    https://cn.vjudge.net/contest/224070#problem/B #include <iostream> #include <cstring> #i ...

  4. BZOJ 4425: [Nwerc2015]Assigning Workstations分配工作站

    难度在于读题 #include<cstdio> #include<algorithm> #include<queue> using namespace std; p ...

  5. 【MySQL】MySQL备份和恢复

    一.为什么要备份数据 在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种. 硬件故障 软件故障 自然灾害 黑客攻击 误操作 (占比最大) 所以, 为了在数据丢失之后能够 ...

  6. 认识Function.prototype.call

    一.前言                                大家先预计一下以下四个函数调用的结果吧! var test = function(){ console.log('hello w ...

  7. css图像处理与动画

    先讨论几个css 问题 1,css 清除浮动的方法 2,css 居中 3,多行省略号 4,小布局技巧 2D 动画功能属性兼容性:transform.transition.animation trans ...

  8. curl 设置头部

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ...

  9. php默认有最大执行时间

    执行php默认有最大执行时间,默认30s,修改,不能设置’1h’,貌似单位不能修改

  10. 【bzoj2795】[Poi2012]A Horrible Poem Hash+分解质因数

    题目描述 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节.如果字符串B是字符串A的循环节,那么A可以由B重复若干次得到. 输入 第一行一个正整数n (n<= ...