http://poj.org/problem?id=1125

题意 : 就是说想要在股票经纪人中传播谣言,先告诉一个人,然后让他传播给其他所有的经纪人,需要输出的是从谁开始传播需要的时间最短,输出这个人的编号和传播需要的最短的时间;

思路 : 典型的最短路问题,就是求最短传播时间,用floyd求出两两最短路。一般来说,因为告诉一个经纪人之后,他可以同时给其他他可以传播的所有人进行传播,所以,只要找到他需要传播的许多人中,找那个传播时间最长的,就能保证他可以给所有他能传播的人都传播到这个谣言,而其余他不能传播到的人,就要靠已传播的人继续往下传播。找n个人中以每个人为开始点的时候传播到所有人中的最长的那个时间以确保所有人都收到谣言,而再循环遍历一下,找这n个最长时间中最短的那个就可以了。

样例解释 : 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

样例是多组输入的,第一行输入n,以0结束,下面是n行,编号默认由1到n代表着n个经纪人,每一行开头一个数字m,代表着编号为i的经纪人可以与m个人传递谣言,然后就是m组数,每组有两个数字,一个是可以与编号为x的经纪人传递消息,另一个是传递消息需要的时间

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; const int oo = <<;
const int maxn = ;
int map[maxn][maxn];
int n; void floyd()
{
for(int k = ; k <= n ; k ++)
{
for(int i = ; i <= n ; i++)
{
for(int j = ; j <= n ; j++)
{
if( map[i][j] > map[i][k] + map[k][j])
map[i][j] = map[i][k]+map[k][j];
}
}
}
} void Init()
{
for(int i = ; i <= n ; i ++)
{
for(int j = ; j <= n ; j++)
{
map[j][i] = map[i][j] = oo;
}
}
} int main()
{
while(~scanf("%d",&n)&&n)
{
Init();
int m,x,y;
for(int i = ; i <= n ; i++)
{
scanf("%d",&m);
for(int j = ; j <= m ; j++)
{
scanf("%d %d",&x,&y);
map[i][x] = y ;
}
}
floyd();
int maxlength;
int min_in_max = oo ;
int flag_source;
for(int i = ; i <= n ; i++) //以i点作为各通路源点
{
maxlength=;
for(int j = ; j <= n ; j++)
if(i != j && maxlength < map[i][j]) //寻找i到j的最长路径
maxlength = map[i][j];
if(min_in_max > maxlength)
{
min_in_max = maxlength; //寻找最长路径中的最短路
flag_source = i ; //该短路所在路径的源点记录
}
}
if(min_in_max<oo)
cout<<flag_source<<' '<<min_in_max<<endl;
else
cout<<"disjoint"<<endl;
}
return ;
}

POJ 1125 Stockbroker Grapevine(floyd)的更多相关文章

  1. poj 1125 Stockbroker Grapevine(多源最短)

    id=1125">链接:poj 1125 题意:输入n个经纪人,以及他们之间传播谣言所需的时间, 问从哪个人開始传播使得全部人知道所需时间最少.这个最少时间是多少 分析:由于谣言传播是 ...

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

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

  3. Stockbroker Grapevine(floyd)

    http://poj.org/problem?id=1125 题意: 首先,题目可能有多组测试数据,每个测试数据的第一行为经纪人数量N(当N=0时, 输入数据结束),然后接下来N行描述第i(1< ...

  4. poj 1125 Stockbroker Grapevine(最短路 简单 floyd)

    题目:http://poj.org/problem?id=1125 题意:给出一个社交网络,每个人有几个别人可以传播谣言,传播谣言需要时间.问要使得谣言传播的最快,应该从那个人开始传播谣言以及使得所有 ...

  5. POJ 1125 Stockbroker Grapevine(最短路基础题)

    Stockbrokers are known to overreact to rumours. You have been contracted to develop a method of spre ...

  6. POJ Stockbroker Grapevine(floyd)

    https://vjudge.net/problem/POJ-1125 题意: 题意不是很好理解,首先输入一个n,表示有n个股票经纪人,接下来输入n行,每行第一个数m为该股票经纪人认识的经纪人数,然后 ...

  7. poj 1125 Stockbroker Grapevine (dij优化 0ms)

    #include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...

  8. POJ 1125 Stockbroker Grapevine【floyd】

    很裸的floyd #include<cstdio> #include<string.h> #include<algorithm> #define maxn 201 ...

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

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

随机推荐

  1. 全面解析SQL SERVER 的左右内连接

    SQL SERVER数据库的三种常用连接解析: 这里先给出一个官方的解释: left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右 ...

  2. Android app version code and name

    android:versionCode和android:versionName 区别   Android的版本可以在androidmainfest.xml中定义, 主要有android:version ...

  3. Assembly(程序集) 反射和缓存

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. jquery 在页面中三种写法

    jQuery 分 2 个系列版本 1.x 与 2.x,主要的区别在于 2.x 不再兼容 IE6.7.8浏览器,这样做的目的是为了兼容移动端开发.由于减少了一些代码,使得该版本比 jQuery 1.x ...

  5. 七天学会NodeJS-学习笔记

    在网上发现一篇nodeJS教程,名为七天学会NodeJS,标题很有吸引力.我不指望七天能学会,只希望可以入门,下面是我的学习笔记和遇到的问题. 教程网址:http://nqdeng.github.io ...

  6. 关于华为C8812救砖教程

    问题:华为C8812刷机后,开机显示:---------------------------------------------------------------- Image signature ...

  7. Oracle中的IF...THEN...ELSE判断

    if...then...else是最常见的一种判断语句,他可以实现判断两种情况. 标准语法如下: if <condition_expression> then plsql_sentence ...

  8. matlab实现高斯消去法、LU分解

    朴素高斯消去法: function x = GauElim(n, A, b) if nargin < 2 for i = 1 : 1 : n for j = 1 : 1 : n A(i, j) ...

  9. java & xml parser

    参考: JDK8 API: http://docs.oracle.com/javase/8/docs/api/ DOM: http://www.w3.org/TR/2004/REC-DOM-Level ...

  10. JAVA类与对象(二)----类定义基础

    类是组成java程序的基本要素,是java中的一种重要的复合数据类型.它封装了一类对象的状态和方法,是这一类对象的原型.一个类的实现包括两个部分:类声明和类体,基本格式: class <clas ...