#include<iostream> #include<algorithm> #include<queue> #include<map> #include<cstring> #include<cstring> #include<cstdio> #include<math.h> using namespace std; const int N=1e6+100; int h[N],w[N],ne[N],e[N],idx; bool st[N]; int dist[N]; const int INF=0x3f3f3f3f; void add(int a,int b,int c) { e[idx]=b; w[idx]=c; ne[idx]=h[a]; h[a]=idx++; } void spfa() { queue<int>q; memset(dist,0,sizeof dist); memset(st,0,sizeof st); st[1]=1; q.push(1); dist[1]=INF; while(q.size()) { int t=q.front(); q.pop(); st[t]=false; for(int i=h[t];~i;i=ne[i]) { int j=e[i]; if(dist[j]<min(dist[t],w[i])) { dist[j]=min(dist[t],w[i]); if(!st[j]) { q.push(j); st[j]=1; } } } } } int main() { int num=0; int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); memset(h,-1,sizeof h); for(int i=1;i<=m;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); add(a,b,c); add(b,a,c); } spfa(); num++; printf("Scenario #%d: ",num); printf("%d ",dist[n]); } return 0; }