View Code of Problem 14

#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.


Back to problem 14