#include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<map> using namespace std; int main(){ int n,t,count=0; while(cin>>n>>t){ if(n==0&&t==0) break; int path[n][n]; for(int i=0;i<n;i++) for(int j=0;j<n;j++) path[i][j]=65535; count++; for(int i=0;i<t;i++){ int a,b,v; cin>>a>>b>>v; if(path[a-1][b-1]>v) path[a-1][b-1]=v; } int w,e,sum=0; int flag[2000]={0}; int flag2=0; scanf("%d %d",&w,&e); for(int i=0;i<w;i++){ int c,d; cin>>c>>d; if((flag[c-1]==0||flag[d-1]==0)&&flag2==0){ flag[c-1]=1; flag[d-1]=1; sum+=path[c-1][d-1]; } if(d==e) flag2=1;; } cout<<"Case #"<<count<<": "<<sum<<endl; } return 0; } |
Double click to view unformatted code.