View Code of Problem 14

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


Back to problem 14