View Code of Problem 14

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<map>
using namespace std;
int main(){
 int n,t,k=1;
    while(cin>>n>>t){
    	if(n==0&&t==0) break;
    	int m[n+1][n+1];
    	for(int i = 0; i < n+1; i++){
    		for(int j = 0; j < n+1; j++){
    			m[i][j] = 999999;
			}
		}
    	for(int i = 0; i < t; i++){
    		int a,b,c;
    		cin>>a>>b>>c;
    		if(m[a][b]>c) m[a][b] = c;
		}
		int w,e;
		cin>>w>>e;
		int flag[10000]={0},flag2=0,dis=0;
		for(int i = 0; i < w; i++){
			int c,d;
			cin>>c>>d;
			if((flag[c]==0||flag[d]==0)&&flag2==0){
				dis+=m[c][d];
				flag[c]=1;
				flag[d]=1;
			}
			if(d==e) flag2=1;
		}
		printf("Case #%d: %d\n",k++,dis);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 14