Stockbroker Grapevine
来源:互联网 发布:论文网站知乎 编辑:程序博客网 时间:2024/06/10 01:29
题目链接:http://vjudge.net/contest/view.action?cid=47127#problem/B
题目大意:
输入一个有向带权图,求一个起点,使其能遍历所有顶点并且时间最短。即求出其最小生成图的半径。
思路:
先要用floyd算法求出这个有向图的最小生成图。然后算出各个顶点的ecc(eccentricity),即可知图的radius。算法步骤:
步骤1:floyd算法对图进行整理。
//floydfor(int k = 1; k <= n; k++) for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) if(dis[i][j] > dis[i][k] + dis[k][j]) dis[i][j] = dis[i][k] + dis[k][j];复杂度为O(n^3)
步骤2:计算各点的ecc。
//computing eccfor(int i = 1; i <= n ; i++){for(int j = 1; j <= n; j++){//cout<<dis[i][j]<<" ";if(dis[i][j] > ecc[i]) ecc[i] = dis[i][j];}//cout<<endl;}复杂度O(n^2)
步骤3,找出中心点,并判断图是否连通,若连通,则输出该点序号及生成图的半径。
int cen = 1;//center point//choose the one with minimum eccfor(int i = 1 ; i <= n ; i ++){//cout<<"ecc["<<i<<"] = "<<ecc[i]<<endl;if(ecc[i] < ecc[cen]) cen = i;}//outputif( ecc[cen] == INF)//disconnected cout << "disjoint" << endl;else cout << cen << " " << ecc[cen]<<endl;
完整代码如下:
#include <iostream>#include "memory.h"#define INF 0x3f3f3f3fusing namespace std;int dis[105][105];//distance matrixint ecc[105];//max eccentricity for each people int main(){ int n; while(cin>>n, n != 0)//n people {memset(dis,0x3f,sizeof(dis));//initializationmemset(ecc,0,sizeof(ecc));int m;//connecting number for each peoplefor(int i = 1; i <= n; i ++)//n people{cin>>m;int k,value;dis[i][i] = 0;if (m != 0) for (int j = 1; j <= m; j++) { cin>>k>>value; dis[i][k] = value; }}//floydfor(int k = 1; k <= n; k++) for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) if(dis[i][j] > dis[i][k] + dis[k][j]) dis[i][j] = dis[i][k] + dis[k][j];//computing eccfor(int i = 1; i <= n ; i++){for(int j = 1; j <= n; j++){//cout<<dis[i][j]<<" ";if(dis[i][j] > ecc[i]) ecc[i] = dis[i][j];}//cout<<endl;}int cen = 1;//center point//choose the one with minimum eccfor(int i = 1 ; i <= n ; i ++){//cout<<"ecc["<<i<<"] = "<<ecc[i]<<endl;if(ecc[i] < ecc[cen]) cen = i;}//outputif( ecc[cen] == INF)//disconnected cout << "disjoint" << endl;else cout << cen << " " << ecc[cen]<<endl;} return 0;}
评测系统上运行结果:Accepted,运行时间0ms,占用内存260KB.
0 0
- stockbroker grapevine
- Stockbroker Grapevine
- Stockbroker Grapevine
- Stockbroker Grapevine
- Stockbroker Grapevine
- Stockbroker Grapevine
- Stockbroker Grapevine
- zoj1082 Stockbroker Grapevine
- POJ1125 Stockbroker Grapevine
- JOJ 1002 Stockbroker Grapevine
- POJ1125 Stockbroker Grapevine
- 1125Stockbroker Grapevine
- pku1125 Stockbroker Grapevine
- zoj1082 Stockbroker Grapevine
- [joj]Stockbroker Grapevine (1002)
- JOJ1002: Stockbroker Grapevine
- poj 1125 Stockbroker Grapevine
- POJ 1125 Stockbroker Grapevine
- cocos2d-x 3.0 关于新建listview后出现白屏的情况
- 面向对象设计原则概述
- 90后IT毕业生调查:不想做IT民工,想做马云
- Learn Python The Hard Way exercise 42
- linux网络诊断工具
- Stockbroker Grapevine
- 最高分是多少
- BondGraph 字体
- Stimulsoft.Report web报表的使用
- 深入Shared Pool
- C++指向类成员的指针的使用(详细介绍)
- 杭电 2048 数塔
- HASH表实现
- 磁盘IO遇到瓶颈时内存Cache的策略