HDU 1874 畅通工程续

很简单的图论题,不过上半年的时候还跟看天书一样,现在花了半小时温习了下folyd,然后写出来,改了下细节,就AC了

,还是满意外的,进步有时真的是在不知不觉中的

 

Title

 

#include <iostream>
using namespace std;
#define inf 10000000
int Dis[210][210];
int main()
{
 int n,m,u,v,w,i,j,a,b,x,s,t;
 while (scanf("%d %d",&n,&m) == 2)
 {
  for (i = 0;i < n;i++)
  {
   for (j = 0;j < n;j++)
   {
    if (i == j)
     Dis[i][j] = 0;
    else
     Dis[i][j] = inf;
   }
  }
  for (i = 0;i < m;i++)
  {
   scanf("%d %d %d",&a,&b,&x);
   if (x < Dis[a][b])
   {
    Dis[a][b] = Dis[b][a] = x;
   }
   
  }

  scanf("%d %d",&s,&t);
  for (u = 0;u < n;u++)
   for (v = 0;v < n;v++)
    for (w = 0;w < n;w++)
     if (Dis[v][u] + Dis[u][w] < Dis[v][w])
      Dis[v][w] = Dis[v][u] + Dis[u][w];
  if (Dis[s][t] < inf)
   printf("%d\n",Dis[s][t]);
  else
   printf("-1\n");
   
 }
 return 0;
}

 

posted @ 2008-09-05 18:42  cnnbboy  阅读(344)  评论(0)    收藏  举报