View Code of Problem 14

#include <stdio.h>
#define N 1000
int main()
{
	int n, t, a[N], b[N], value[N], w, e, c[N], d[N];
	int k = 1, i;    //k用来记录Case;
	while(scanf("%d %d", &n, &t) != EOF && n != 0 && t != 0)
	{
		int sum = 0;    //sum用来记录总路程;
		for(i = 0; i < t; i++)
		    scanf("%d %d %d", &a[i], &b[i], &value[i]);
		for(i = 0; i < t; i++)
		{
			for(int j = i + 1; j < t; j++)
			{
				if(a[i] == a[j] && b[i] == b[j] && value[i] != 0 && value[j] != 0)
				{
					if(value[i] > value[j])
						value[i] = 0;
					else
						value[j] = 0;
				}
			}
		}
		scanf("%d %d", &w, &e);
		for(i = 0; i < w; i++)
			scanf("%d %d", &c[i], &d[i]);
		for(i = 0; i < w; i++)
		{
			for(int j = i + 1; j < w; j++)
			{
				if((c[i] == c[j] && d[i] == d[j]) || (c[i] == d[j] && d[i] == c[j]))
				{
					c[j] = 0;
					d[j] = 0;
				}
			}
		}
		for(i = 0; i < w; i++)
		{
		    for(int j = 0; j < t; j++)
			{
		        if((c[i] == a[j] && d[i] == b[j]) || (c[i] == b[j] && d[i] == a[j]))
				{
					if(c[i] <= e && d[i] <= e)
					{
			            sum += value[j];
					}
				}
			    if((d[i] == e || c[i] == e) && ((c[i] == a[j] && d[i] == b[j]) || (c[i] == b[j] && d[i] == a[j])))
			    	break;
			}
		}
		printf("Case #%d: %d\n", k++, sum);
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 14