#include<stdio.h> struct road{ int start; int end; int value; int flag; }; int main(){ int m,n,k=0,s,i,j,min; while(scanf("%d %d",&m,&n)!=EOF){ if(m==0&&n==0) break; k++; s=0; struct road a[n]; for(i=0;i<n;i++){ scanf("%d %d %d",&a[i].start,&a[i].end,&a[i].value); a[i].flag=0; } int w,e,tag=0; scanf("%d %d",&w,&e); struct road b[w]; for(i=0;i<w;i++) scanf("%d %d",&b[i].start,&b[i].end); for(i=0;i<w;i++){ for(j=0;j<n;j++){ if((a[j].start==b[i].start&&a[j].end==b[i].end)||(a[j].start==b[i].end&&a[j].end==b[i].start)) { min=a[j].value; for(int p=0;p<n;p++){ if((a[p].start==b[i].start&&a[p].end==b[i].end)||(a[p].start==b[i].end&&a[p].end==b[i].start)) { if(a[p].value<min) min=a[p].value; } } if(a[j].flag==0){ s+=min; a[j].flag=1; if(b[i].end!=e) break; } if(b[i].end==e) { printf("Case #%d: ",k); printf("%d\n",s); tag=1; break; } } } if(tag==1) break; } } } |
Double click to view unformatted code.