poj1125--Floyd
题解:
有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的更多相关文章
- poj1125(Floyd最短路)
//Accepted 164 KB 0 ms //floyd #include <cstdio> #include <cstring> #include <iostrea ...
- poj1125&zoj1082Stockbroker Grapevine(Floyd算法)
Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000K Description Stockbrokers are known to ...
- poj1125 Stockbroker Grapevine Floyd
题目链接:http://poj.org/problem?id=1125 主要是读懂题意 然后就很简单了 floyd算法的应用 代码: #include<iostream> #include ...
- POJ-1125 Stockbroker Grapevine---Floyd应用
题目链接: https://vjudge.net/problem/POJ-1125 题目大意: 股票经纪人要在一群人中散布一个谣言,而谣言只能在亲密的人中传递,题目各处了人与人之间的关系及传递谣言所用 ...
- POJ Stockbroker Grapevine(floyd)
https://vjudge.net/problem/POJ-1125 题意: 题意不是很好理解,首先输入一个n,表示有n个股票经纪人,接下来输入n行,每行第一个数m为该股票经纪人认识的经纪人数,然后 ...
- floyd算法学习笔记
算法思路 路径矩阵 通过一个图的权值矩阵求出它的每两点间的最短路径矩阵.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1):又 ...
- 最短路(Floyd)
关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...
- 最短路径之Floyd算法
Floyd算法又称弗洛伊德算法,也叫做Floyd's algorithm,Roy–Warshall algorithm,Roy–Floyd algorithm, WFI algorithm. Floy ...
- UVALive 4431 Fruit Weights --floyd,差分约束?
题意: 给出一些关系用aX <= bY表示, 最后查询aX 和 bY的关系,是>=,==,<=,还是不能确定,还是出现了矛盾. 解法:对每一个关系其实都可以建一条X->Y的边, ...
- 洛谷P1119 灾后重建[Floyd]
题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...
随机推荐
- poj 1637 混合图欧拉回路 学习笔记
题目大意 求混合图是否存在欧拉回路 做法 有向边我们只有增加入度出度 对于无向边,我们给它设定一个初始方向 如果不能满足|入度-出度|为偶数,无解 然后在网络流图中, 设设定方向的反向连一条边,表示反 ...
- Distinct Substrings(spoj 694)
题意:要求不同子串的个数 /* 先求出height数组,不难看出height之和就是重复的字符串个数,用总的减去它就行了. */ #include<cstdio> #include< ...
- grunt 入门 应用grunt对代码进行压缩
1.什么是grunt grunt的官方解释是:javascript世界的构建工具. 为何要构建工具? 一句话:自动化.对于需要反复重复的任务,例如压缩(minification).编译.单元测试.li ...
- “百度杯”CTF比赛 十月场_GetFlag(验证码爆破+注入+绝对路径文件下载)
题目在i春秋ctf大本营 页面给出了验证码经过md5加密后前6位的值,依照之前做题的套路,首先肯定是要爆破出验证码,这里直接给我写的爆破代码 #coding:utf-8 import hashlib ...
- 慕课爬虫实战 爬取百度百科Python词条相关1000个页面数据
http://www.imooc.com/learn/563 spider_main.py #!/usr/bin/python # coding=utf-8 #from baike_spider im ...
- 标准C程序设计七---43
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- select函数与stdio混用的不良后果 (转)
出自:http://www.cppblog.com/mysileng/archive/2013/01/15/197284.html 今天在看UNP6.5节,学习到了select与stdio混用的后果. ...
- C语言集锦(一) C代码生成图片:BMP、PNG和JPEG
1.生成BMP图片 在学习图形图像的过程中,最简单和常见的格式是BMP和PPM.下面将给出生成BMP的极度精简代码,然后讲解BMP格式. #include <stdio.h> #inclu ...
- Web Cache
我们都知道,网站对于一些常用数据做缓存,会加速网站访问,像下面这样: public string GetFoo() { if ( cache.get("Foo") == null ...
- 小程序-引用其他js文件
我也是小白菜,之所以有这个记录是因为我做项目时遇到了这个问题 流程: 1.需要建立一个js文件 content.js function myContent() { console.log(&quo ...