#include <cmath>
#include <queue>
#include <cstdio>
#include <string>
#include <cstdlib>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,m,i,j,x,y,min,c,f,k;
int map[153][153],b[153];
string bl[153],s1,s2;
while(scanf("%d",&n),n!=-1)
{
memset(b,0,sizeof(b));
for(i=0;i<153;i++)
for(j=0;j<153;j++)
map[i][j]=0xffffff;
cin>>s1>>s2;f=1;k=1;
if(s1==s2)
f=0;
bl[0]=s1;
if(f)
bl[k++]=s2;
for(min=0;min<n;min++)
{
cin>>s1>>s2>>c;
x=y=333;
for(i=0;i<k;i++)
{
if(bl[i]==s1) x=i;
if(bl[i]==s2) y=i;
}
if(x==333) {bl[k++]=s1;x=k-1;}
if(y==333) {bl[k++]=s2;y=k-1;}
map[x][y]=map[y][x]=c<map[x][y]?c:map[x][y];
}
if(!f) {printf("0\n");continue;}
b[0]=1;
m=k-1;
while(m--)
{
min=0xffffff;
for(i=1;i<k;i++)
if(!b[i]&&map[0][i]<min)
{
j=i;
min=map[0][i];
}
b[j]=1;
for(i=1;i<k;i++)
if(!b[i]&&map[0][j]+map[j][i]<map[0][i])
map[0][i]=map[0][j]+map[j][i];
}
if(map[0][1]==0xffffff)
printf("-1\n");
else
printf("%d\n",map[0][1]);
}
return 0;
}
//不懂,怎么会相差这么多,上面做法4780Ms,换了一点就成1030Ms了、、、C++的输入输出和C就差这么多?
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstdlib>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,m,i,j,x,y,min,c,f,k;
int map[153][153],b[153];
char bl[153][33],s1[33],s2[33];
while(scanf("%d",&n),n!=-1)
{
memset(b,0,sizeof(b));
for(i=0;i<153;i++)
for(j=0;j<153;j++)
map[i][j]=0xffffff;
scanf("%s%s",s1,s2);f=1;k=1;
if(strcmp(s1,s2)==0)
f=0;
strcpy(bl[0],s1);
if(f)
{strcpy(bl[k],s2);k++;}
for(min=0;min<n;min++)
{
scanf("%s%s%d",s1,s2,&c);
x=y=333;
for(i=0;i<k;i++)
{
if(strcmp(bl[i],s1)==0) x=i;
if(strcmp(bl[i],s2)==0) y=i;
}
if(x==333) {strcpy(bl[k],s1);x=k;k++;}
if(y==333) {strcpy(bl[k],s2);y=k;k++;}
map[x][y]=map[y][x]=c<map[x][y]?c:map[x][y];
}
if(!f) {printf("0\n");continue;}
b[0]=1;
m=k-1;
while(m--)
{
min=0xffffff;
for(i=1;i<k;i++)
if(!b[i]&&map[0][i]<min)
{
j=i;
min=map[0][i];
}
b[j]=1;
for(i=1;i<k;i++)
if(!b[i]&&map[0][j]+map[j][i]<map[0][i])
map[0][i]=map[0][j]+map[j][i];
}
if(map[0][1]==0xffffff)
printf("-1\n");
else
printf("%d\n",map[0][1]);
}
return 0;
}