1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstring> 5 #include <algorithm> 6 #include <queue> 7 #include <stack> 8 #include <vector> 9 using namespace std; 10 int d[150][150],mp[150][150]; 11 int main(int argc, char *argv[]) 12 { 13 int n,m; 14 while(scanf("%d%d",&n,&m)!=EOF) 15 { 16 if(m==0&&n==0) 17 break; 18 for(int i=0;i<=n;i++) 19 for(int j=0;j<=n;j++) 20 d[i][j]=mp[i][j]=1e8; 21 for(int i=0;i<m;i++) 22 { 23 int a,b,c; 24 scanf("%d%d%d",&a,&b,&c); 25 d[a][b]=mp[a][b]=mp[b][a]=d[b][a]=min(d[a][b],c); 26 } 27 int minn=1e8; 28 for(int k=1;k<=n;k++) 29 { 30 for(int i=1;i<=n;i++) 31 for(int j=i+1;j<=n;j++) 32 minn=min(minn,d[i][j]+mp[i][k]+mp[k][j]); 33 for(int i=1;i<=n;i++) 34 for(int j=1;j<=n;j++) 35 d[i][j]=min(d[i][j],d[i][k]+d[k][j]); 36 } 37 if(minn!=1e8) 38 printf("%d\n",minn); 39 else 40 puts("It's impossible."); 41 } 42 43 return 0; 44 }