POJ 1125.Stockbroker Grapevine

来源:互联网 发布:淘宝企业店铺变更 编辑:程序博客网 时间:2024/06/03 20:44

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

AC代码(C++):

#include <iostream>#include <algorithm>#include <stdio.h>#include <vector>#include <queue>#include <math.h>#include <string>#include <string.h>#include <bitset>#define INF 0xfffffff#define MAXN 105using namespace std;int map[MAXN][MAXN],n;  void floyd()  {for(int i = 1; i <= n; i++)map[i][i] = 0;    for(int k=1; k<=n; k++)    {        for(int i=1; i<=n; i++)        {            for(int j=1; j<=n; j++)            {                if(map[i][k]<INF&&map[k][j]<INF)                    map[i][j]=min(map[i][j],map[i][k]+map[k][j]);            }        }    }}int main(){while(cin>>n){if(n==0)break;for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)map[i][j] = INF;for(int i = 1; i <= n; i++){int m;cin>>m;for(int j = 0; j < m; j++){int tmp;cin>>tmp;cin>>map[i][tmp];}}floyd();int minlen = INF;int minstart = 0;for(int i = 1; i <= n; i++){int maxlen = 0;for(int j = 1; j <= n; j++){if(map[i][j]>maxlen)maxlen = map[i][j];}if(maxlen<minlen){minlen = maxlen;minstart = i;}}cout<<minstart<<' '<<minlen<<endl;}}
总结:求多源最短路径, 显然用floyd. 还有, 这题测试用例中不会出现disjoint的情况! 第一次提交忘了考虑这种情况还是AC了, 所以也懒得改了. 要改也很简单, 如果最后minlen等于INF说明有节点没有到达, 输出disjoint就好了.

原创粉丝点击