storm

努力学习编译知识,恶补计算机体系结构!

poj 1125 最短路问题

额,刚开始都不带看清楚题意的,今天阳光很好,心情也好,下午准备去玩。。。。

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;

#define MAX 1000
#define INF (1<<20)
int dist[MAX][MAX];
int point, maxsize, minsize;
void init(int n)
{
 for(int i=1; i<=n; i++)
 for(int j=1; j<=n; j++)
    dist[i][j]=(i==j? 0: INF);
    int k, v, w;
    for(int i=1;i<=n; i++)
    {
      scanf("%d",&k);
      while(k--)
      {
       scanf("%d %d", &v, &w);
       dist[i][v] = w;
      }
    }
}

int floyd(int n)
{
    int i, j, k;
    for(i=1; i<=n; i++)
    for(j=1; j<=n; j++)
    for(k=1; k<=n; k++)
    if(dist[j][k]>dist[j][i] + dist[i][k])
    dist[j][k] = dist[j][i] + dist[i][k];
  return 0;  
}

int search(int n)
{
    int i,j;
     minsize = INF;
    for(i=1; i<=n; i++)
    {
      maxsize = 0;
     for(int j=1; j<=n; j++)
     if(dist[i][j]>maxsize)
     maxsize = dist[i][j];
     if(maxsize < minsize)
     {
      minsize = maxsize;
      point = i;
     }
    }
 return 0;
}
int main()
{
    int n;
    while(scanf("%d",&n)&&n)
    {
     init(n);
     floyd(n);
     search(n);
     if(minsize==INF)
     printf("disjoint\n");
     else
     printf("%d %d\n",point, minsize);
    }
   system("pause");
   return 0;
}


阅读更多
文章标签: search system
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

poj 1125 最短路问题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭