View Code of Problem 14

#include "stdio.h"
#include "math.h"
#include "string.h"

struct data
{
	int a;
	int b;
	int len;
	int flag;
};

void main()
{
	struct data s[100];
	int i,j;
	int n,e;
	int w,t;
	int x,y;
	int sum;
	int q;
	for(q=1;scanf("%d%d",&n,&t)!=EOF;q++)				//n个地点,t行
	{
		sum=0;
		if(n==0&&t==0)
			break;
		for(i=0;i<t;i++)
		{
			scanf("%d%d%d",&s[i].a,&s[i].b,&s[i].len);
			s[i].flag=0;
		}

		for(i=0;i<t;i++)
		{
			for(j=0;j<t&&j!=i;j++)
			{
				if(s[i].a==s[j].a&&s[i].b==s[j].b&&s[j].flag==0)
				{

					if(s[j].len>s[i].len)
						s[j].flag=1;								//大距离flag=1
					else
						s[i].flag=1;

		//	printf("%d %d %d %d\n",s[i].a,s[i].b,s[i].len,s[i].flag);
		//	printf("%d %d %d %d\n",s[j].a,s[j].b,s[j].len,s[j].flag);
				}
			}
		}

	/*	for(i=0;i<t;i++)
		{
			printf("%d %d %d %d\n",s[i].a,s[i].b,s[i].len,s[i].flag);

		}
*/
		scanf("%d%d",&w,&e);					//w行,地点e
		for(i=0;i<w;i++)
		{
			scanf("%d%d",&x,&y);
			for(j=0;j<t;j++)
			{
				if(((s[j].a==x&&s[j].b==y)||(s[j].b==x&&s[j].a==y))&&s[j].flag==0)
					sum=sum+s[j].len;
			}
		}
		printf("Case #%d: %d\n",q,sum);
	}
}

Double click to view unformatted code.


Back to problem 14