锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
涓昏鏄緩鍥撅紝鐪嬩笉鎳傜殑璇濆彲浠ュ拰鎴戜氦嫻?nbsp; 闃呰鍏ㄦ枃
]]>
璺熷墠闈㈠仛鐨勯鐩竴鏍楓?
寤虹珛涓涓猻t-緗?
s榪炰笂x鐨?y榪炰笂t
x->y
娉ㄦ剰鍘繪帀0-0鐘舵?nbsp; 闃呰鍏ㄦ枃
]]>
鏈澶ф祦鐢? 鍖堢墮鍒?鎴栬呮渶澶ф祦錛堝緩鍥?婧愮偣s榪炰笂鎵鏈夌殑鐗涳紝鎵鏈夌殑媯氳繛涓婃眹鐐箃錛?nbsp; 闃呰鍏ㄦ枃
]]>
]]>


#include<iostream>
#include<cmath>
using namespace std;
#define MAXN 1002
#define inf 1000000000
typedef double elem_t;
elem_t mat[MAXN][MAXN];
elem_t dist[MAXN];
int num[MAXN][2];
double distance(int a1,int a2,int b1,int b2)

{
return sqrt((double)((a1-b1)*(a1-b1)+(a2-b2)*(a2-b2)));
}
void dijkstra(int n,int s)

{
int v[MAXN],i,j;
int k;
for (i=0;i<n;i++)
dist[i]=mat[s][i],v[i]=0;//鍒濆鍖?/span>

for (dist[s]=0,j=0;j<n;j++)
{
for (k=-1,i=0;i<n;i++)//浼拌璁¤窛紱繪渶灝忕殑欏剁偣k
if (!v[i]&&(k==-1||dist[i] < dist[k]))
k=i;
for (v[k]=1,i=0;i<n;i++)
if (!v[i] && mat[k][i]>0.0)//&& max(dist[k],mat[k][i]) > dist[i])
{
dist[i] = min( max(dist[k],mat[k][i]),dist[i]);
//dist[i]=min(dist[k],mat[k][i]);
}
}
}
int main()

{
int n,m,k,x1,y1;

for(int i = 1;;i ++)
{
scanf("%d",&n);
if( n == 0)break;
memset(mat,0,sizeof(mat));
for( int j=0;j<n;j++)
scanf("%d %d",&num[j][0],&num[j][1]);
for( int k=0;k<n;k++)
for( int j=0;j<n;j++)
{
mat[k][j]=distance(num[k][0],num[k][1],num[j][0],num[j][1]);
}

dijkstra(n,0);
printf("Scenario #%d\n",i);
printf("Frog Distance = %0.3lf\n\n",dist[1]);//dist[n-1]<<endl<<endl;
}
return 0;
}

/**//*
1
3 3
1 2 3
1 3 4
2 3 5
*/

/**//*
璧風(fēng)偣鍒皀鐐?nbsp;璺緞涓?nbsp; 鎵鑳芥壙鍙楃殑 鏈澶ч噸閲忕殑杞?br>
dist[k] 婧愮偣鍒発 璺緞涓渶灝忕殑閭d釜杈規(guī)潈鍊?nbsp; mat[k][i]杈筴-i鏉冨?nbsp;
鍙栬礬寰?nbsp;dist[k] 鍜宮at銆恔銆戙恑銆戣竟鏈澶ч偅涓?nbsp; 鏇存柊 dist[i]
*/
#include<iostream>
using namespace std;
#define MAXN 1002
#define inf 1000000000
typedef int elem_t;
int mat[MAXN][MAXN];
int dist[MAXN];
void dijkstra(int n,int s)

{
int v[MAXN],i,j,k;
for (i=0;i<n;i++)
dist[i]=mat[s][i],v[i]=0;//鍒濆鍖?/span>

for (dist[s]=0,j=0;j<n;j++)
{
for (k=-1,i=0;i<n;i++)//浼拌璁¤窛紱繪渶灝忕殑欏剁偣k
if (!v[i]&&(k==-1||dist[i] > dist[k]))
k=i;
for (v[k]=1,i=0;i<n;i++)
if (!v[i] && mat[k][i]>0&& min(dist[k],mat[k][i]) > dist[i])
{
dist[i]=min(dist[k],mat[k][i]);
}
}
}
int main()

{
int cases;
int n,m,k,x1,y1;
cin>>cases;

for(int i = 1;i <= cases;i ++)
{
cin>>n>>m;
memset(mat,0,sizeof(mat));


for(int j=0;j<m;j++)
{
cin>>x1>>y1>>k;
mat[x1-1][y1-1]=k;
mat[y1-1][x1-1]=k;
dijkstra(n,0);
cout<<"Scenario #"<<i<<":"<<endl;
cout<<dist[n-1]<<endl<<endl;
}
return 0;
}

/**//*
1
3 3
1 2 3
1 3 4
2 3 5
*/