View Code of Problem 14

#include<bits/stdc++.h>
using namespace std;
int g[2000][2000];
int f[2000][2000];
int main(){
	int n,m,d=0;
	while(cin>>n>>m&&(n!=0||m!=0)){
		memset(f,0,sizeof(f));
		memset(g,0,sizeof(g));
		for(int i=0;i<m;++i){
			int x,y,z;
			scanf("%d%d%d",&x,&y,&z);
			if(g[x][y]!=0){
				g[x][y]=min(g[x][y],z);
				g[y][x]=min(g[y][x],z);
			}
			else{
				g[x][y]=z;
				g[y][x]=z;
			}
		}
		int w,eli,sum=0,flag=0;
		scanf("%d%d",&w,&eli);
		for(int i=0;i<w;++i){
			int x,y;
			scanf("%d%d",&x,&y);
			if(!flag){
				if(f[x][y]==0){
					sum+=g[x][y];
					f[x][y]=1;
					f[y][x]=1;
				}
				if(y==eli){
					flag=1;
				}
			}
		}
		printf("Case #%d: %d\n",++d,sum);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 14