描述

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.

输入

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.

输出

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.

样例输入

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

样例输出

3 2
3 10

题目来源

Southern African 2001

求一个Stockbroker把消息传递给其他Stockbroker所用的最短时间。

floyd求出两点之间消息传递的时间后,再求最短时间。

#include <stdio.h>
#define MAXN 105
#define inf 0x3f3f3f3f int N;
int map[MAXN][MAXN];
int ans[MAXN]; void floyd(){
for(int k=; k<=N; k++){
for(int i=; i<=N; i++){
for(int j=; j<=N; j++){
if(i==k||i==j)continue;
if(map[i][k]!=inf && map[k][j]!=inf &&
map[i][k]+map[k][j]<map[i][j]){
map[i][j]=map[i][k]+map[k][j];
}
}
}
}
}
int main(int argc, char *argv[])
{
int t,u,v,w;
while(scanf("%d",&N)!=EOF && N){
for(int i=; i<=N; i++){
for(int j=; j<=N; j++){
if(i==j)map[i][j]=;
else map[i][j]=inf;
}
}
for(int u=; u<=N; u++){
scanf("%d",&t);
while(t--){
scanf("%d %d",&v,&w);
map[u][v]=w;
}
ans[u]=-;
}
floyd();
for(int i=; i<=N; i++){
for(int j=; j<=N; j++){
if(map[i][j]>ans[i])ans[i]=map[i][j];
}
}
int min=inf,index;
for(int i=; i<=N; i++){
if(ans[i]<min){
min=ans[i];
index=i;
}
}
if(min==inf){
printf("disjoint\n");
}else{
printf("%d %d\n",index,min);
}
}
return ;
}

TOJ 2857 Stockbroker Grapevine的更多相关文章

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

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

  2. POJ 1125 Stockbroker Grapevine

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

  3. Stockbroker Grapevine(floyd)

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

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

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

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

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

  6. OpenJudge/Poj 1125 Stockbroker Grapevine

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

  7. 【POJ 1125】Stockbroker Grapevine

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

  8. POJ 1125 Stockbroker Grapevine【floyd简单应用】

    链接: http://poj.org/problem?id=1125 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

  9. Stockbroker Grapevine(最短路)

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

随机推荐

  1. windows下go调用内存dll

    有时候我们希望将dll嵌入到程序内部,以提高程序的安全性,这里我写的一个开源memorydll模块. 首先 go get github.com/nkbai/go-memorydll 然后在需要的时候 ...

  2. 转载:java中抽象类和接口的作用与区别

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...

  3. C语言字符串拼接

    1.使用strcat进行字符串拼接 #include <stdio.h> #include <stdlib.h> #include <string.h> int m ...

  4. os模块与 sys模块

    os模块是与操作系统交互的一个接口 ''' os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作 ...

  5. BT网站--Python开发爬虫代替.NET

    BT网站-奥修磁力-Python开发爬虫代替.NET写的爬虫,主要演示访问速度和在一千万左右的HASH记录中索引效率. IBMID 磁力下载- WWW.IBMID.COM  现在用的是Python + ...

  6. python-is,==

    在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断 ...

  7. SPOJ - LOCKER 数论 贪心

    题意:求出\(n\)拆分成若干个数使其连乘最大的值 本题是之江学院网络赛的原题,计算规模大一点,看到EMAXX推荐就做了 忘了大一那会是怎么用均值不等式推出结果的(还给老师系列) 结论倒还记得:贪心分 ...

  8. 完美的js继承

    //完美的js继承 少了类管理器 Object.extend=function(){ var fnTest = /\b_super\b/; //继承父类 var _super = arguments[ ...

  9. 【记录】drozer与adb工具的安装与使用

    drozer:链接:https://pan.baidu.com/s/1o8QOIF4 密码:a7yv adb:链接:https://pan.baidu.com/s/1o865VSm 密码:zq9t d ...

  10. Java8如何用

    2014年发布的Java8,现在应该是业界使用最普遍的Java版本,可很多Java开发人员并没有充分发挥这4年前发布的版本的优点, 本文就是带着“学以致用”的目的去了解Java8,挖掘编码中可提高效率 ...