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. 【markdown】 markdown 语法

    介绍几个 markdown 语法学习地址和相关工具 参考链接 coding gitlab markdown offical markdown editor markdown editor2

  2. 最长公共子序列(LCS)问题

    最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:子串是串的一个连续的部分,子序列则是从不改变序 ...

  3. Linux学习-CentOS 7.x 预设启动的服务简易说明

    这里 仅介绍几个很常见的 daemons 而已,更多的信息呢,就得要麻烦你自己使用 systemctl list-unit-files --type=service 去查询.底下的建议主要是针对 Li ...

  4. Elasticsearch安装---安装jdk

    1.在Linux 上检查Java版本是否满足要求: java -version 如果运行上面命令时报错:-bash: java: command not found,首先检查是否有jdk ,要是有安装 ...

  5. WPF使用异步+绑定的方式处理大数据量

    WPF的优势在于界面处理,即使是这样,在面对大数据量的时候也免不了界面假死,同一个线程里处理界面跟大数据量,这是不可避免的.解决办法还是有的,可以使用分页加载,虚拟加载,动态加载,增加条件限制... ...

  6. HDU 4729 An Easy Problem for Elfness 主席树

    题意: 给出一棵树,每条边有一个容量. 有若干次询问:\(S \, T \, K \, A \, B\),求路径\(S \to T\)的最大流量. 有两种方法可以增大流量: 花费\(A\)可以新修一条 ...

  7. STL学习笔记2--list

    List --- 双向列表 List是线性列表结构,数据查找需要一个接一个,不能直接得到元素地址,检索时间与目标元素的位置成正比.但是插入数据比较快,可以在任何位置插入数据或者删除数据.list特点是 ...

  8. python 查看异常

    接触python 一直觉着编译后报错经常没能捕捉显示,每次也只能从头看到尾 恰好在水木社区中看到关于异常捕捉帖子 方法一:捕获所有异常 try: a=b b=c except Exception,ex ...

  9. shutil——高级的 文件、文件夹、压缩包 处理模块

    高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])复制文件内容(不包含元数据)从类文件对象src到类文件对dst.可选参数leng ...

  10. [python][oldboy] * **的用法

    * 和**主要用在函数的参数中, # coding=utf8 """ 三种编码: 1 python程序代码的编码 # coding=utf8 2 设置/查看python程 ...