#include<bits/stdc++.h>
#define l long long
using namespace std;
l n,m,f[1003][1003];
int main()
{
cin>>n>>m;
for(l i=1;i<=n;i++)
{
for(l j=1;j<=n;j++)
{
if(i!=j) f[i][j]=1e12;
}
}
for(l i=1;i<=m;i++)
{
l a;
cin>>a;
if(a==0)
{
l s,t;
cin>>s>>t;
if(f[s][t]==1e12) cout<<-1<<endl;
else cout<<f[s][t]<<endl;
}
else
{
l x,y,z;
cin>>x>>y>>z;
f[x][y]=min(z,f[x][y]);
f[y][x]=min(z,f[y][x]);
for(l j=1;j<=n;j++)
{
for(l k=1;k<=n;k++)
{
f[j][k]=min(f[j][k],f[j][x]+f[x][k]);
f[k][j]=min(f[k][j],f[k][y]+f[y][j]);
}
}
}
}
}
样例全过,不知道错在哪