hoj1653
/*This Code is Submitted by billforum for Problem 1653 at 2012-02-14 13:38:42*/ #include <iostream> using namespace std; const int N=1005; const int Max=1000002; int n,v[N],p[N][N]; bool f[N]; int min(int x,int y) { return(x<y?x:y); } void init() { for(int i=1;i<=n;i++) { f[i]=0; v[i]=0; for(int j=i+1;j<=n;j++) { p[i][j]=0; p[j][i]=0;// } } return; } void path() { int k; f[1]=1; k=1; for(int i=2;i<=n;i++) { int mcost=0; for(int j=2;j<=n;j++) { if(!f[j]&&(v[j]>mcost)) { mcost=v[j]; k=j; } } f[k]=1; for(int t=2;t<=n;t++) { if(!f[t]&&(min(v[k],p[k][t])>v[t])) v[t]=min(v[k],p[k][t]); } } return; } int main() { int test,id=0; cin>>test; while(test--) { int m; id++; cin>>n>>m; init(); for(int i=0;i<m;i++) { int fr,ed,weight; cin>>fr>>ed>>weight; p[fr][ed]=weight; p[ed][fr]=weight; } for(int j=2;j<=n;j++) v[j]=p[1][j]; path(); cout<<"Scenario #"<<id<<":"<<endl; cout<<v[n]<<endl<<endl; } return 0; }