题解:

有N个股票经济人能够互相传递消息。他们之间存在一些单向的通信路径。如今有一个消息要由某个人開始传递给其它全部人。问应该由哪一个人来传递,才干在最短时间内让全部人都接收到消息。

显然,用Floyd算法,然后选出每一个点到其它点的最长距离其中的最短距离。

/** \brief poj 1125 Floyd
*
* \param date 2014/7/31
* \param state AC
* \return memory 756k time 0ms
*
*/ #include <iostream>
#include <fstream>
#include <cstring> using namespace std; const int MAXN=101;
int DistMap[MAXN][MAXN];
int n;
const int INF=20;
//int best;
//int num; //bool Floyd()
void Floyd()
{
for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i!=j && DistMap[i][j]>DistMap[i][k]+DistMap[k][j])
DistMap[i][j]=DistMap[i][k]+DistMap[k][j];
}
}
}
//
int maxlength, min_in_max=INF,flag_source;
for(int i=1;i<=n;i++)//以i点作为各通路源点
{
maxlength=0;
for(int j=1;j<=n;j++)
{
if(i!=j && DistMap[i][j]>maxlength)//寻找i到j的最长路径
{
maxlength=DistMap[i][j];
}
}
if(min_in_max>maxlength)
{
min_in_max=maxlength;//寻找最长路径中的最短路
flag_source=i;
}
} /*Output*/
if(min_in_max<INF)
cout<<flag_source<<' '<<min_in_max<<endl;
else
cout<<"disjoint"<<endl;
} int main()
{
//cout << "Hello world!" << endl;
//freopen("input.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
memset(DistMap,INF,sizeof(DistMap));
if(n==0)break;
int num,v,w;
for(int i=1;i<=n;i++)
{
cin>>num;
for(int j=0;j<num;j++)
{
//DistMap[][]
scanf("%d%d",&v,&w);
DistMap[i][v]=w;
}
}
//Floyd
//if(Floyd()==false)
// cout<<"disjoint"<<endl;
//else cout<<num<<" "<<best<<endl;
Floyd();
}
return 0;
}

poj1125--Floyd的更多相关文章

  1. poj1125(Floyd最短路)

    //Accepted 164 KB 0 ms //floyd #include <cstdio> #include <cstring> #include <iostrea ...

  2. poj1125&zoj1082Stockbroker Grapevine(Floyd算法)

    Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000K Description Stockbrokers are known to ...

  3. poj1125 Stockbroker Grapevine Floyd

    题目链接:http://poj.org/problem?id=1125 主要是读懂题意 然后就很简单了 floyd算法的应用 代码: #include<iostream> #include ...

  4. POJ-1125 Stockbroker Grapevine---Floyd应用

    题目链接: https://vjudge.net/problem/POJ-1125 题目大意: 股票经纪人要在一群人中散布一个谣言,而谣言只能在亲密的人中传递,题目各处了人与人之间的关系及传递谣言所用 ...

  5. POJ Stockbroker Grapevine(floyd)

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

  6. floyd算法学习笔记

    算法思路 路径矩阵 通过一个图的权值矩阵求出它的每两点间的最短路径矩阵.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1):又 ...

  7. 最短路(Floyd)

    关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...

  8. 最短路径之Floyd算法

    Floyd算法又称弗洛伊德算法,也叫做Floyd's algorithm,Roy–Warshall algorithm,Roy–Floyd algorithm, WFI algorithm. Floy ...

  9. UVALive 4431 Fruit Weights --floyd,差分约束?

    题意: 给出一些关系用aX <= bY表示, 最后查询aX 和 bY的关系,是>=,==,<=,还是不能确定,还是出现了矛盾. 解法:对每一个关系其实都可以建一条X->Y的边, ...

  10. 洛谷P1119 灾后重建[Floyd]

    题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...

随机推荐

  1. C#函数多返回值的方法

    C#以前都是不支持多返回值,当需要返回多个值的时候,就会感觉比较麻烦,通常的做法有 1.采用ref,out 关键字返回 2.定义类或者结构体 返回对象 C# 6.0出来了新的语法 Tuple 支付返回 ...

  2. 常用的UltraEdit使用技巧

    Tip 1: Alt+C 列模式可以说最初选择使用这个文本编辑软件,原因很简单,就是因为"她"具有列编辑模式.如果您还不知道什么是列编辑模式的话,我想您应该好好研究一下啦.这是一个 ...

  3. Java程序员最常犯的错误盘点之Top 10

    1. 数组转ArrayList 为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码: Arrays.asList确实会返回一个ArrayList对象,但是该类是Arra ...

  4. android 笔记(Service)

    Service 一.Serivce的启动方式分两种 1.startService.用这种方式启动的话,负责启动这个service的Activity或者其他组件即使被销毁了,Service也会继续在后台 ...

  5. PHP错误捕获处理

    PHP错误捕获处理 一般捕获错误使用的方法是: try{ ...}catch(Exception $e){ echo $e->getMessage();} 或者 set_exception_ha ...

  6. hdu 4510(模拟)

    小Q系列故事——为什么时光不能倒流 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)T ...

  7. iOS-开发者账号失效后是否还可以打包

    参考链接:https://www.jianshu.com/p/601f596e8550

  8. [原创][FPGA]有限状态机FSM学习笔记(一)

    1. 概述--何为有限状态机FSM? 有限状态机-Finite State Machine,简写为FSM,是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用.通常 ...

  9. Java爬取51job保存到MySQL并进行分析

    大二下实训课结业作业,想着就爬个工作信息,原本是要用python的,后面想想就用java试试看, java就自学了一个月左右,想要锻炼一下自己面向对象的思想等等的, 然后网上转了一圈,拉钩什么的是动态 ...

  10. iOS应用崩溃日志揭秘

    这篇文章还可以在这里找到 英语 Learn how to make sense of crash logs! 本文作者是 Soheil Moayedi Azarpour, 他是一名独立iOS开发者. ...